> when sga_max_size <= 128M the granule size is 4M > when sga_max_size >= 128M the granule size is 16M > > Where do those values 4M and 16M come from? I mean why did they specifically > choose/use 4M and 16M? The granule sizes are OS- and version-dependent. You can change _ksmg_granule_size to change it. If you ask why Oracle chooses 4M, 16M, etc., I don't know. Bug:3202079 says that parameter "is based on a potentially complex algorithm". Metalink Bug:3038210 has some insight. Although it doesn't answer your question, it has an interesting trace event to show each granule's information: ALTER SESSION SET EVENTS 'immediate trace name GRANULELIST level 131071'; Levels are explained in Julian Dyke's OracleDiagnostics.ppt, which also states that the same info can be obtained from x$ksmge. Yong Huang