JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 可调参数参考手册     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  Oracle Solaris 系统调优概述

2.  Oracle Solaris 内核可调参数

何处查找可调参数信息

常规内核及内存参数

physmem

zfs_arc_min

zfs_arc_max

default_stksize

lwp_default_stksize

logevent_max_q_sz

segkpsize

noexec_user_stack

fsflush 和相关参数

fsflush

tune_t_fsflushr

autoup

dopageflush

doiflush

进程大小调整参数

maxusers

reserved_procs

pidmax

max_nprocs

maxuprc

ngroups_max

分页相关参数

lotsfree

desfree

minfree

throttlefree

pageout_reserve

pages_pp_maximum

tune_t_minarmem

fastscan

slowscan

min_percent_cpu

handspreadpages

pages_before_pager

maxpgio

与交换相关的参数

swapfs_reserve

swapfs_minfree

内核内存分配器

kmem_flags

kmem_stackinfo

常规驱动程序参数

moddebug

ddi_msix_alloc_limit

网络驱动程序参数

igb 参数

mr_enable

intr_force

ixgbe 参数

tx_queue_number

rx_queue_number

intr_throttling

rx_limit_per_intr

tx_ring_size

rx_ring_size

tx_copy_threshold

rx_copy_threshold

常规 I/O 参数

maxphys

rlim_fd_max

rlim_fd_cur

常规文件系统参数

ncsize

dnlc_dir_enable

dnlc_dir_min_size

dnlc_dir_max_size

TMPFS 参数

tmpfs:tmpfs_maxkmem

tmpfs:tmpfs_minfree

伪终端

pt_cnt

pt_pctofmem

pt_max_pty

STREAMS 参数

nstrpush

strmsgsz

strctlsz

System V 消息队列

System V 信号

System V 共享内存

segspt_minfree

调度

disp_rechoose_interval

计时器

hires_tick

timer_max

特定于 SPARC 系统的参数

consistent_coloring

tsb_alloc_hiwater_factor

default_tsb_size

enable_tsb_rss_sizing

tsb_rss_factor

地址组参数

lpg_alloc_prefer

lgrp_mem_default_policy

lgrp_mem_pset_aware

3.  NFS 可调参数

4.  Internet 协议套件可调参数

5.  网络高速缓存和加速器可调参数

6.  系统工具参数

A.  可调参数变更历史记录

B.  本手册的修订历史记录

索引

分页相关参数

Solaris OS 使用需求换页式虚拟内存系统。系统运行时,会根据需要将页引入内存中。当内存占用达到特定阈值之上并且对内存的需求仍在继续,将开始换页。换页要经过由特定参数控制的多个级别。

常规换页算法如下所述:

系统最初限制自身使用不超过一个 CPU 的 4% 来进行 pageout 操作。随着内存压力增加,支持 pageout 操作时消耗的 CPU 时间量将线性增加,直到最大值,即一个 CPU 的 80%。算法将检查一定量的内存(介于 slowscan fastscan 之间),然后在发生下列情况之一时停止:

当页面调出线程完成其扫描时,如果仍存在内存不足问题,则会调度在将来执行 1/4 秒的另一次扫描。

换页子系统的配置机制已更改。不是依赖于 fastscan slowscanhandspreadpages 的一组预定义值,系统将在引导时为这些参数确定适当的设置。在 /etc/system 文件中设置这些参数中的任何一个都会导致系统不能使用最佳值。


注意

注意 - 请从 /etc/system 文件中删除 VM 系统的所有调优设置。请以缺省设置运行并确定是否需要调整这些参数中的任何参数。不要设置 cachefreepriority_paging


支持对 CPU 和内存的动态重新配置 (Dynamic reconfiguration, DR)。涉及内存添加或删除的 DR 操作中的系统会重新计算相关参数的值,除非已在 /etc/system 中显式设置了这些参数。如果已显式设置,将使用 /etc/system 中指定的值,除非违反了对变量值的约束。如果那样,将重置该值。

lotsfree

说明

充当启动系统换页操作的初始触发器。当超过此阈值时,页扫描程序将被激活以开始查找要回收的内存页。

数据类型

无符号长整数

缺省值

物理内存的 1/64 和 512 KB 中的较大者

范围

最小值是 512 KB 和物理内存的 1/64 中的较大者,表示为页数(使用 getpagesize 返回的页大小)。有关更多信息,请参见 getpagesize(3C)

最大值是物理内存页数。最大值应该不超过物理内存的 30%。系统不会强制实施此范围,但“验证”部分所述内容除外。

单位

动态?

是,但如果发生基于内存的 DR 操作,则动态更改将丢失。

验证

如果 lotsfree 大于物理内存量,则其值将被重置为缺省值。

隐式

lotsfree 大于 desfree,后者又大于 minfree,应始终保持这种关系。

何时更改

如果页需求突然急剧增加,内存算法可能无法跟上需求。一个解决方法是提早开始回收内存。此解决方法可以为换页系统提供一些额外余量。

一个经验法则是将此参数设置为系统在数秒内需要分配的数量的 2 倍。此参数受工作负荷影响。DBMS 服务器在缺省设置下可能工作良好。不过,对于执行繁重的文件系统 I/O 的系统,您可能需要调整此参数。

对于具有相对静态的工作负荷和大量内存的系统,请降低此值。最小可接受值为 512 KB,表示为页数(使用 getpagesize 返回的页大小)。

交付级别

不稳定

desfree

说明

指定在系统上始终空闲的合适内存量。

数据类型

无符号整数

缺省值

lotsfree / 2

范围

最小值是 256 KB 和物理内存的 1/128 中的较大者,表示为页数(使用 getpagesize 返回的页大小)。

最大值是物理内存页数。最大值应该不超过物理内存的 15%。系统不会强制实施此范围,但“验证”部分所述内容除外。

单位

动态?

是,除非发生添加或删除内存的动态重新配置操作。在那种情况下,该值将重置为 /etc/system 文件中提供的值或者将根据新的物理内存值计算得出。

验证

如果 desfree 大于 lotsfree,则 desfree 将设置为 lotsfree / 2。不会显示任何消息。

隐式

lotsfree 大于 desfree,后者又大于 minfree,应始终保持这种关系。

负面影响

增大此参数的值可能会带来多种负面影响。当新值接近或超过系统上的可用内存量时,会发生以下情况:

  • 将不处理异步 I/O 请求,除非可用内存超过 desfree。增大 desfree 的值可能会导致本应可以成功的请求被拒绝。

  • NFS 异步写入被作为同步写入执行。

  • 交换程序将提前激活,交换程序的行为将倾向于更主动的操作。

  • 系统可能无法将尽可能多的可执行页预装入系统。此负面影响可能会导致应用程序的运行速度比它们应有的速度要慢。

何时更改

对于具有相对静态的工作负荷和大量内存的系统,请降低此值。最小可接受值为 256 KB,表示为页数(使用 getpagesize 返回的页大小)。

交付级别

不稳定

minfree

说明

指定最小可接受内存级别。当内存低于此数值时,系统将优先安排成功完成页面调出操作或者将进程完全交换出内存所需的分配。分配将拒绝或者阻塞其他分配请求。

数据类型

无符号整数

缺省值

desfree / 2

范围

最小值是 128 KB 和物理内存的 1/256 中的较大者,表示为页数(使用 getpagesize 返回的页大小)。

最大值是物理内存页数。最大值应该不超过物理内存的 7.5%。系统不会强制实施此范围,但“验证”部分所述内容除外。

单位

动态?

是,除非发生添加或删除内存的动态重新配置操作。在那种情况下,该值将重置为 /etc/system 文件中提供的值或者将根据新的物理内存值计算得出。

验证

如果 minfree 大于 desfree,则 minfree 将设置为 desfree / 2。不会显示任何消息。

隐式

lotsfree 大于 desfree,后者又大于 minfree,应始终保持这种关系。

何时更改

缺省值通常就足够了。对于具有相对静态的工作负荷和大量内存的系统,请降低此值。最小可接受值为 128 KB,表示为页数(使用 getpagesize 返回的页大小)。

交付级别

不稳定

throttlefree

说明

指定内存级别,在该级别,阻塞的内存分配请求将被置于休眠状态,即使内存足以满足该请求。

数据类型

无符号整数

缺省值

minfree

范围

最小值是 128 KB 和物理内存的 1/256 中的较大者,表示为页数(使用 getpagesize 返回的页大小)。

最大值是物理内存页数。最大值应该不超过物理内存的 4%。系统不会强制实施此范围,但“验证”部分所述内容除外。

单位

动态?

是,除非发生添加或删除内存的动态重新配置操作。在那种情况下,该值将重置为 /etc/system 文件中提供的值或者将根据新的物理内存值计算得出。

验证

如果 throttlefree 大于 desfree,则 throttlefree 将设置为 minfree。不会显示任何消息。

隐式

lotsfree 大于 desfree,后者大于 minfree,应始终保持这种关系。

何时更改

缺省值通常就足够了。对于具有相对静态的工作负荷和大量内存的系统,请降低此值。最小可接受值为 128 KB,表示为页数(使用 getpagesize 返回的页大小)。有关更多信息,请参见 getpagesize(3C)

交付级别

不稳定

pageout_reserve

说明

指定保留供页面调出或调度程序线程专用的页数。当可用内存小于该值时,对于除页面调出或调度程序之外的进程,将拒绝非阻塞分配。页面调出线程需要有一个小内存池供其使用,以便它可以分配执行 I/O 来将页写入其后备存储时所需的数据结构。

数据类型

无符号整数

缺省值

throttlefree / 2

范围

最小值是 64 KB 和物理内存的 1/512 中的较大者,表示为页数(使用 getpagesize(3C) 返回的页大小)。

最大值是物理内存页数。最大值应该不超过物理内存的 2%。系统不会强制实施此范围,但“验证”部分所述内容除外。

单位

动态?

是,除非发生添加或删除内存的动态重新配置操作。在那种情况下,该值将重置为 /etc/system 文件中提供的值或者将根据新的物理内存值计算得出。

验证

如果 pageout_reserve 大于 throttlefree / 2,则 pageout_reserve 将设置为 throttlefree / 2。不会显示任何消息。

隐式

lotsfree 大于 desfree,后者又大于 minfree,应始终保持这种关系。

何时更改

缺省值通常就足够了。对于具有相对静态的工作负荷和大量内存的系统,请降低此值。最小可接受值为 64 KB,表示为页数(使用 getpagesize 返回的页大小)。

交付级别

不稳定

pages_pp_maximum

说明

定义必须处于未锁定状态的页数。如果将锁定页的某个请求会迫使可用内存低于该值,将会拒绝该请求。

数据类型

无符号长整数

缺省值

(tune_t_minarmem + 100 和 [引导时可用内存的 4% + 4 MB]) 中的较大者

范围

系统强制实施的最小值是 tune_t_minarmem + 100。系统不会强制实施最大值。

单位

动态?

是,除非发生添加或删除内存的动态重新配置操作。在那种情况下,该值将重置为 /etc/system 文件中提供的值或者将根据新的物理内存值计算得出。

验证

如果 /etc/system 文件中指定的值或计算得出的缺省值小于 tune_t_minarmem + 100,则该值将重置为 tune_t_minarmem + 100。

如果增大 /etc/system 文件中的该值,则不会显示任何消息。仅在引导时,以及在涉及添加或删除内存的动态重新配置操作期间,才会进行验证。

何时更改

当可用内存量看起来足够用,但内存锁定请求却失败或者向共享内存段附加 SHARE_MMU 标志失败时。

太大的值会导致内存锁定请求(mlockmlockallmemcntl)无谓地失败。有关更多信息,请参见 mlock(3C)mlockall(3C)memcntl(2)

交付级别

不稳定

tune_t_minarmem

说明

定义为避免死锁而需要维持的最小可用驻留(不可交换)内存。用来保留部分内存供 OS 的核心使用。在 OS 确定最大可用内存量时,以此方式限制的页将不可见。

数据类型

带符号整数

缺省值

25

范围

1 - 物理内存

单位

动态?

验证

无。较大的值会导致物理内存浪费。

何时更改

缺省值通常就足够了。如果系统发生锁定并且调试信息指示没有内存可用,请考虑增大缺省值。

交付级别

不稳定

fastscan

说明

定义内存压力最高时系统每秒查看的最大页数。

数据类型

带符号整数

缺省值

请以下列方式之一设置 fastscan 缺省值:

  • 使用 /etc/system 文件中设置的 fastscan 值。

  • 使用 /etc/system 文件中设置的 maxfastscan 值。

  • 如果 /etc/system 文件中既没有设置 fastscan 也没有设置 maxfastscanfastscan 将在系统引导时设置为 64 MB。然后,在系统引导几分钟后,fastscan 值将设置为扫描程序使用一个 CPU 的 10% 在一秒内可以扫描的页数。

在以上所有三种情况中,如果派生的值大于系统中内存的一半,fastscan 值将被限定为系统中内存值的一半。

范围

64 MB - 系统物理内存的一半

单位

动态?

是,除非发生添加或删除内存的动态重新配置操作。在那种情况下,该值将重置为 /etc/system 文件中提供的值或者将根据新的物理内存值计算得出。

验证

最大值是 64 MB 和物理内存的 1/2 中的较小者。

何时更改

当内存不足期间首选更主动的内存扫描时,特别是当系统受制于密集内存需求时,或者当执行繁重文件 I/O 时。

交付级别

不稳定

slowscan

说明

定义尝试回收内存时系统每秒查看的最小页数。

数据类型

带符号整数

缺省值

物理内存的 1/20(以页数表示)和 100 中的较小者。

范围

1 - fastscan / 2

单位

动态?

是,除非发生添加或删除内存的动态重新配置操作。在那种情况下,该值将重置为 /etc/system 文件中提供的值或者将根据新的物理内存值计算得出。

验证

如果 slowscan 大于 fastscan / 2,则 slowscan 将重置为 fastscan / 2。不会显示任何消息。

何时更改

当内存不足期间首选更主动的内存扫描时,特别是当系统受制于密集内存需求时。

交付级别

不稳定

min_percent_cpu

说明

定义 pageout 可以使用的最小 CPU 百分比。在确定页扫描程序可以使用的最大时间量时,可以使用此参数作为起点

数据类型

带符号整数

缺省值

4

范围

1 - 80

单位

百分比

动态?

验证

何时更改

在具有多个 CPU 和大量内存的系统上,如果系统受制于密集内存需求,增大该值可以允许页面调度程序花费更多时间来尝试查找内存。

交付级别

不稳定

handspreadpages

说明

Oracle Solaris OS 使用双指针时钟算法来查找当内存较低时要回收的页。时钟的第一个指针遍历内存,将页标记为未使用的。第二个指针在第一个指针之后一段距离遍历内存,查看页是否仍标记为未使用的。如果页仍标记为未使用的,该页将被回收。第一个指针和第二个指针之间的距离为 handspreadpages

数据类型

无符号长整数

缺省值

fastscan

范围

1 - 系统中的最大物理内存页数

单位

动态?

是。此参数要求内核 reset_hands 参数也设置为非零值。在 handspreadpages 的新值被认可后,reset_hands 将设置为零。

验证

该值将设置为物理内存量和 handspreadpages 中的较小者。

何时更改

当您要增大页在被回收之前可能驻留的时间量时。增大该值会增大两个指针之间的间隔,因此,会增大回收页之前的时间量。

交付级别

不稳定

pages_before_pager

说明

定义在 I/O 完成后立即释放页(而不是存储页以便可以重用)的部分系统阈值。阈值为 lotsfree + pages_before_pager。NFS 环境还使用此阈值在内存压力增加时减少其异步活动。

数据类型

带符号整数

缺省值

200

范围

1 - 物理内存量

单位

动态?

验证

何时更改

如果绝大多数 I/O 是针对实际上只读取或写入了一次便未再引用的页执行的,则您可以更改此参数。将此变量设置为较大的内存量可以保持向空闲表添加页。

此外,当系统受制于突发的严重内存压力时,您也可以更改此参数。在这种情况下,较大的值有助于保持较大的缓冲来应对压力。

交付级别

不稳定

maxpgio

说明

定义换页系统可以排队的最大页 I/O 请求数。此数值除以 4 可以得到分页系统使用的最大实际数值。此参数用于限制请求数以及控制进程交换。

数据类型

带符号整数

缺省值

40

范围

1 到一个可变的最大值,该最大值取决于系统体系结构,但是主要取决于 I/O 子系统,例如控制器数、磁盘数和磁盘交换区大小

单位

I/0

动态?

验证

隐式

来自页面调度程序的最大 I/O 请求数受请求缓冲区列表大小的限制,该大小当前为 256。

何时更改

需要增大此参数以便更快地换出内存时。如果配置了多个交换设备或者如果交换设备为分散读写设备,较大的值可能有助于更快地缓解内存压力。请注意,现有 I/O 子系统应该能够处理额外 I/O 负载。此外,如果交换分区和应用程序文件位于同一磁盘上,增大交换区 I/O 可能会降低应用程序 I/O 性能。

交付级别

不稳定