Solaris 可调参数参考手册

fsflush 及相关参数

本节介绍 fsflush 及相关可调参数。

fsflush

定期运行系统守护进程 fsflush 以执行以下三项主要任务:

  1. 每次调用时,fsflush 都会将一段时间内的脏文件系统页刷新到磁盘。

  2. 每次调用时,fsflush 都会检查部分内存并将已修改的页写入其后备存储。如果页已经过修改,并且不满足以下任一条件,则会写入页:

    • 页为内核页

    • 页为可用页

    • 页为锁定页

    • 页与交换设备关联

    • 页当前参与 I/O 操作

    实际结果是刷新文件中使用具有写入权限的 mmap 进行映射的页以及实际已更改的页。

    页会被刷新到后备存储,但是仍与使用它们的进程保持连接。当系统在低内存的情况下运行时,如果自刷新以来页未被修改过,则这种方式可以避免因先将页写入后备存储而后再声明页所造成的延迟,从而简化页的回收过程。

  3. fsflush 将文件系统元数据写入磁盘。每进行 n 次调用便执行一次此写入操作,其中 n 根据各种配置变量计算得出。有关详细信息,请参见tune_t_fsflushrautoup

可以配置以下功能:

对于大多数系统,内存扫描和文件系统元数据同步是 fsflush 的主要活动。根据系统的使用情况,内存扫描可能很少使用,否则会占用过多的 CPU 时间。

tune_t_fsflushr

说明

指定 fsflush 调用的间隔秒数

数据类型

带符号整数

缺省值

1

范围

1 到 MAXINT

单位

是否为动态

验证

如果此值小于或等于零,则会将其重置为 1 并显示警告消息。仅在引导时执行此检查。

何时更改

请参见 autoup 参数。

承诺级别

不稳定

autoup

说明

autouptune_t_flushr 一起控制每次调用时检查其中脏页的内存量以及文件系统同步操作的频率。

autoup 的值还可用于控制是否将缓冲区从可用列表写出。每当带有 B_DELWRI 标志(标识已更改的文件内容页)的缓冲区在列表中的存在时间超过 autoup 秒时,便会将其写出。增大 autoup 的值可延长缓冲区在内存中的保留时间。

数据类型

带符号整数

缺省值

30

范围

1 到 MAXINT

单位

是否为动态

验证

如果 autoup 小于或等于零,则会将其重置为 30 并显示警告消息。仅在引导时执行此检查。

含义

autoup 应该是 tune_t_fsflushr 的整数倍。autoup 至少应该是 tune_t_fsflushr 值的 6 倍。 否则,每次调用 fsflush 时,都会扫描过多的内存量。

系统总页数与 tune_t_fsflushr 的乘积应大于或等于 autoup,以便在 dopageflush 不为零时检查内存。

何时更改

在下列情况下,可能要更改 autoup 和/或 tune_t_fsflushr 参数:

  • 内存较大的系统-在这种情况下,增大 autoup 会减小每次调用 fsflush 时扫描的内存量。

  • 内存需求最低的系统-同时增大 autouptune_t_fsflushr 会减少扫描次数。同时增大 autoup 是为了维护当前的 autoup / tune_t_fsflushr 比率。

  • 具有大量瞬态文件的系统(例如,邮件服务器或软件生成计算机)-如果创建了大量文件然后将其删除,则 fsflush 可能不必将这些文件的数据页写入磁盘。

承诺级别

不稳定

dopageflush

说明

控制是否在调用 fsflush 期间检查内存中已修改的页。每次调用 fsflush 时,都会确定系统中的内存页数。此数值可能会因动态重新配置操作而发生了更改。每次调用都使用以下算法进行扫描:总页数 x tune_t_fsflushr / autoup 页数

数据类型

带符号整数

缺省值

1(启用)

范围

0(禁用)或 1(启用)

单位

切换(开/关)

是否为动态

验证

何时更改

如果系统页面扫描程序很少运行(由 vmstat 输出的 sr 列中的 0 值指示)。

承诺级别

不稳定

doiflush

说明

控制是否在调用 fsflush 期间执行文件系统元数据同步。每进行 Nfsflush 调用便会执行一次此同步操作,其中 N= (autoup / tune_t_fsflushr)。由于此算法是整数除法,因此,如果 tune_t_fsflushr 大于 autoup,则每次调用 fsflush 时都会执行同步,因为代码会检查其重复计数器,看是大于还是等于 N。请注意,每次调用 fsflush 时都会计算 N 一次。随后对 tune_t_fsflushrautoup 所做的更改不会影响同步操作的频率。

数据类型

带符号整数

缺省值

1(启用)

范围

0(禁用)或 1(启用)

单位

切换(开/关)

是否为动态

验证

何时更改

一段时间内频繁修改文件并且刷新操作引起的负载扰乱了系统行为。

如果文件的存在性以及状态的一致性在重新引导系统时都无关紧要,则最好将这些文件保留在 TMPFS 文件系统(如 /tmp)中。从 Solaris 7 发行版开始,可以使用 mount -noatime 选项减少系统上的 inode 通信流量。此选项可避免在访问文件时进行 inode 更新。

对于参与实时处理的系统,可能需要禁用此选项并使用显式应用程序文件同步来实现一致性。

承诺级别

不稳定