一、大型页面的支持

当代计算机体系结构大都支持多种页面大小,例如,IA-32体系结构支持4KB或4MB的页面, Linux操作系统只是将大型页面用于映射实际的内核映像。大型页面的使用主要是为了改进高性能计算(HPC)以及其他内存密集型应用的性能。任何占用大量虚存的访存密集型应用程序都可以使用大型页面来改进性能(Linux使用 2MB或 4MB的大型页面, AIX使用 16MB的大型页面,而 Solaris使用的页面大小为 4MB)。︰6的比率应是合理的)。增加这个时间长度以及频率间隔(但仍遵循 1︰6比率)可能有利于拥有内核密集型工作负荷的大型系统,因为后台回写操作可能会干扰到工作负荷自身的性能行为。

  • 个不同区域。ZONE_DMA是可由(老式)I/O设备寻址的区域, ZONE_ NORMAL是可由内核寻址的区域, 而 会使其效果增至4倍。这意味着该参数当前控制较低区域防护算法的强度。对于可能占用系统中较高区域的分配操作,lower_zone_protection这个可调参数可以提高对较低内存区域的保护程度 。
  • 和 8。提高上限值(并且重编译内核)有助于在拥有大量磁盘驱动器以及绑定寻道操作的工作负荷的环境中提高 VM I/O并发性。提高最大值会改进性能的另一种情况是与回写操作相关的 CPU绑定情形,这时系统中可提供额外处理器来处理总体工作负荷。
  • 时,内核在每个 malloc()调用前都发起检查以确保存在足够的内存。若该标志置为 1,则假定系统中总是存在着足够多的内存。当该标志置为 0时,则确保只会分配页面替换基础架构所能处理的用户虚存量,并且每个页面都需要一个后备存储器。匿名内存页面需要交换空间,而文件页面则需要可以被保留的磁盘空间。将该标志置为1后会生成更有效的内存利用行为。但是,基于特定工作负荷,它可能导致某些进程被关闭的场景。概言之,将该标志置为 0会导致内核通过估测可用的内存量和明显无效的失败请求,执行启发式的内存过量使用处理操作。不幸的是,由于系统使用一种启发式而不是精确的算法来分配内存,这种设置有时会导致系统可用内存过载。将该标志置为 1会导致内核执行内存无过量使用方式的处理。这种设置会增大内存过载的可能性,但也会提高内存密集型任务(例如某些科学应用所执行的任务)的性能。另一种支持情形是将该标志置为2。在这种情况下,对于全部交换空间以及 overcommit_ratio 参数(在下面讨论)中规定的物理内存百分比之和的内存请求,内核会分配失败。 在 Linux中, 将该标志置为2可以降低内存过量使用的风险。
  • 时所考虑的物理内存百分比。默认值是50。
  • 作为 x的乘幂时标识了内核一次性读入的页面数目(实际的交换预读窗口)。该参数的默认值对于内存小于 16MB的系统为 2,对于内存更大的系统为3, 这些取值在多数情况下都可看作是合理的设置。 该参数可用于改进页面 I/O效率, 但如果该参数被不当指定的话, 系统可能会面临过度的I/O和内存消耗。
  • 时激活该开关。 系统在决策过程中进一步利用了某个危机因子,该因子在每次需要重试页面替换操作时都增加 2倍。如果系统难以定位可回收的未映射页面,则 VM子系统执行反向工作过程并开始对匿名内存进行页换出。如果不想对匿名内存进行页换出,则可以通过为 swappiness参数赋予较低取值来表达。如果 kswapd正在使用大量 CPU资源或者系统正在 iowait状态中耗费时间,则可以增加 swappiness参数值可以提高系统的整体性能。

  • 五、CPU调度器