从 Solaris 2.6 发行版开始,便引入了在 UltraSPARC® (sun4u) 平台上使用不同的页放置策略的功能。页放置策略尝试通过分配物理页地址来最大程度地利用 L2 高速缓存。无论选择何种算法作为缺省算法,此算法可能生成的结果都会比其他用于特定应用程序集的算法要差。此参数可更改系统上为所有进程选定的放置算法。
根据 L2 高速缓存的大小,将内存分为多个容器。在未映射的页上第一次发生页面错误时,页放置代码便会从容器中分配一个页面。所选页取决于要使用以下三种可能的算法中的哪一种:
页面染色 (Page coloring)-将使用各种虚拟地址位确定从中选择页的容器。此算法为 Solaris 8 发行版中的缺省算法。需要将 consistent_coloring 设置为零才能使用此算法。对于此算法,不存在任何按进程历史记录。
虚拟地址=物理地址-程序中连续的页将从连续的容器中选择页。需要将 consistent_coloring 设置为 1 才能使用此算法。对于此算法,不存在任何按进程历史记录。
容器跳跃 (Bin-hopping)-程序中连续的页通常是每隔一个容器分配一个页面,但是此算法偶尔会跳过多个容器。需要将 consistent_coloring 设置为 2 才能使用此算法。每个进程都从随机选择的容器启动,并且保留最后所分配容器的每进程内存。
是
无。值大于 2 会导致控制台上显示多条 WARNING: AS_2_BIN:bad consistent coloring value 消息。此后系统立即挂起。需要重新启动电源才能恢复系统。
当系统的主工作负荷是一组长期运行的高性能计算 (high-performance computing, HPC) 应用程序时。更改此值可以优化性能。具有多个活动进程的文件服务器,数据库服务器和系统(例如,编译和分时服务器)则不会因更改而受益。
不稳定
按以下方式初始化 tsb_alloc_hiwater,以便设置可分配给转换存储缓冲区 (translation storage buffer, TSB) 的物理内存量的上限:
tsb_alloc_hiwater= 物理内存(以字节为单位)/tsb_alloc_hiwater_factor
当分配给 TSB 的内存与 tsb_alloc_hiwater 的值相等时,由于页面未映射,因此 TSB 内存分配算法将尝试回收 TSB 内存。
使用此因子增大 tsb_alloc_hiwater 值时务必谨慎。要防止系统挂起,生成的上限值必须远低于 swapfs_minfree 和 segspt_minfree 的值。
整数
32
1 到 MAXINT
请注意,如果因子为 1,则所有物理内存均可分配给 TSB,这可能导致系统挂起。如果因子太大,则没有可分配给 TSB 的内存,从而降低了系统性能。
是
无
如果系统具有许多关联到非常大的共享内存段的进程,则更改此参数的值。在大多数情况下,无需调节此变量。
不稳定
整数
缺省值为 0 (8 KB)
可能的值为:
值 |
说明 |
---|---|
0 |
8 KB |
1 |
16 KB |
3 |
32 KB |
4 |
128 KB |
5 |
256 KB |
6 |
512 KB |
7 |
1 MB |
是
无
该值通常不需要更改。但是,如果系统上多数进程的工作集都大于平均工作集,或者禁用了驻留集大小 (resident set size, RSS) 大小调整功能,则更改此值会很有益。
不稳定
布尔值
1(可以调整 TSB 的大小)
0(可以调整 TSB 的大小)或 1(TSB 保留为 tsb_default_size)
是
是
请勿修改此可调参数。
不稳定
控制 RSS 大小调整试探性算法的 RSS 到 TSB 的跨度比。此因子除以 512 便可得出 TSB 跨度的百分比,在将 TSB 视为备选的大小调整对象之前,此跨度比必须驻留在内存中。
整数
384,由于预期某些虚拟地址会映射到 TSB 中的同一个槽,因此只能得出值 75%。
0 到 512
是
无
如果具有较小地址空间的应用程序发现由于 TSB 中的虚拟地址冲突而导致的 TSB 未命中,则可能需要考虑将此值减小至 0。
例如,在某些情况下,将 tsb_rss_factor 更改为 50% 而不是 75% 可能有助于消除 TSB 中的虚拟地址冲突,但是会使用更多的内核内存,特别是在高负荷的系统上。
不稳定