文章目录
- perf_event_paranoid
- perf_event_max_stack
- perf_event_mlock_kb
- perf_event_max_contexts_per_stack
- pid_max
- ns_last_pid
- powersave-nap: (PPC only)
- printk
- printk_delay
- printk_ratelimit
- printk_ratelimit_burst
- randomize_va_space
- sched_schedstats
- shmall
- shmmax
- shm_rmid_forced
- sysctl_writes_strict
- softlockup_all_cpu_backtrace
- tainted
- threads-max
- unknown_nmi_panic
- watchdog
- watchdog_cpumask
- watchdog_thresh
- 参考文档
perf_event_paranoid
控制非特权用户对性能事件系统的使用(无CAP_SYS_ADMIN)。预设值为2。
-1 | 允许所有用户使用(几乎)所有事件。在没有CAP_IPC_LOCK的情况下,忽略perf_event_mlock_kb之后的mlock限制 |
---|---|
> = 0 | 没有CAP_SYS_ADMIN的用户不允许ftrace函数跟踪点。禁止没有CAP_SYS_ADMIN的用户进行原始跟踪点访问 |
> = 1 | 禁止没有CAP_SYS_ADMIN的用户访问CPU事件 |
> = 2 | 禁止没有CAP_SYS_ADMIN的用户进行内核配置 |
perf_event_max_stack
控制要复制(attr.sample_type & PERF_SAMPLE_CALLCHAIN)配置的事件的最大堆栈帧数,例如,在使用“ perf record -g”或“ perf trace –call-graph fp”时。
仅当没有使用启用了呼叫链的事件时,才可以执行此操作,否则写入此文件将返回 -EBUSY。
默认值为127。
perf_event_mlock_kb
控制每个cpu环缓冲区的大小不按mlock限制计算。
默认值为512 + 1页。一般每页4Kb,所以默认值为516。
perf_event_max_contexts_per_stack
控制(attr.sample_type & PERF_SAMPLE_CALLCHAIN)配置的事件的堆栈帧上下文条目的最大数量,例如,在使用“ perf record -g”或“ perf trace –call-graph fp”时。
仅当没有使用启用了呼叫链的事件时,才可以执行此操作,否则写入此文件将返回-EBUSY。
预设值为8。
pid_max
PID分配值。当内核的下一个PID值达到这个值时,它返回到最小PID值。pid_max的PID值或更大值不能被分配。
ns_last_pid
当前(使用此sysctl的一个任务位于其中)pid命名空间中分配的最后一个pid。为fork内核上的下一个任务选择pid时,尝试分配一个从这个开始的数字。
powersave-nap: (PPC only)
如果设置,Linux-PPC将使用节能的“nap”模式,否则将使用“doze”模式。
printk
printk中的四个值分别表示:console_loglevel, default_message_loglevel, minimum_console_loglevel 和 default_console_loglevel。
这些值会影响printk()打印或记录错误消息时的行为。有关不同日志级别的更多信息,请参见“ man 2 syslog”。
- console_loglevel:
优先级高于此优先级的消息将被打印到控制台 - default_message_loglevel:
没有明确优先级的消息将以该优先级打印 - minimum_console_loglevel:
可以将console_loglevel设置为的最小值(最大值) - default_console_loglevel:
console_loglevel的默认值
printk_delay
将每个printk消息延迟printk_delay毫秒
允许使用0到10000之间的值。
printk_ratelimit
一些警告消息是受速率限制的。printk_ratelimit指定这些消息之间的最短时间长度(以秒为单位)。默认值为5秒。
值为0将禁用速率限制。
printk_ratelimit_burst
虽然从长期来看,我们强制每 printk_ratelimit 秒一条消息,但我们确实允许一组消息通过。printk_ratelimit_burst指定在ratelimit启动之前可以发送的消息数。
默认值为10条消息。
randomize_va_space
对于支持此功能的体系结构,此选项可用于选择系统中使用的进程地址空间随机化的类型。
0 | 关闭进程地址空间随机化。这是始终不支持此功能的体系结构以及使用“ norandmaps”参数启动的内核的默认设置。 |
---|---|
1 | 使mmap base,stack和VDSO页面的地址随机化。除其他外,这意味着共享库将被加载到随机地址。同样对于PIE链接的二进制文件,代码开始的位置是随机的。如果启用了CONFIG_COMPAT_BRK选项,则为默认设置。 |
2 | 另外启用堆随机化。如果禁用了CONFIG_COMPAT_BRK,这是默认设置。有一些遗留的应用程序(比如1996年的一些旧版本libc.so.5)假设brk区域在代码+bss结束后才开始。当brk区域的开始是随机的时,这些应用程序将中断。然而,没有已知的非遗留应用程序会以这种方式被破坏,所以对于大多数系统来说,选择完全随机化是安全的。具有旧二进制文件和/或损坏二进制文件的系统应配置为启用CONFIG_COMPAT_BRK,这将堆排除在进程地址空间随机化之外。 |
sched_schedstats
启用/禁用调度程序统计信息。启用此功能会在调度程序中产生少量开销,但对于调试和性能调整很有用。
shmall
此参数设置可以在系统范围内使用的共享内存页面的总数。因此,SHMALL应该始终至少为ceil(shmmax / PAGE_SIZE)。
如果不确定Linux系统上的默认PAGE_SIZE是什么,则可以运行以下命令:
#getconf PAGE_SIZE
shmmax
该值可用于查询和设置可创建的最大共享内存段大小的运行时限制。内核现在支持高达1Gb的共享内存段。此值默认为SHMMAX。
shm_rmid_forced
Linux允许您通过setrlimit(2)设置资源限制,包括一个进程可以消耗多少内存。不幸的是,共享内存段被允许与任何进程关联而不存在,因此可能不被计算在任何资源限制上。如果启用,则在分离或进程终止后,共享内存段的附加计数变为零时,共享内存段将自动销毁。它也会破坏在进程退出时创建的但从不附加的片段。IPC_RMID的用途是立即销毁未连接的段。当然,这打破了定义事物的方式,因此一些应用程序可能会停止工作。请注意,除非同时配置资源限制(特别是RLIMIT_AS和RLIMIT_anproc),否则此功能对您没有好处。大多数系统不需要这个。
sysctl_writes_strict
通过 /proc/sys 接口,控制文件位置如何影响更新sysctl值的行为:
-1 | 传统的per-write sysctl值处理,没有printk警告。每次写入系统调用必须完全包含要写入的sysctl值,并且在同一个sysctl文件描述符上多次写入都将重写sysctl值,而不管文件位置如何。 |
---|---|
0 | 与上面的行为相同,但当文件位置不是0时,对执行写入sysctl文件描述符的进程发出警告。 |
1 | (默认)在写入sysctl字符串时尊重文件位置。多次写入将追加到sysctl值缓冲区。超过sysctl值缓冲区最大长度的任何内容都将被忽略。对数值sysctl项的写入必须始终位于文件位置0,并且该值必须完全包含在写入系统调用发送的缓冲区中。 |
softlockup_all_cpu_backtrace
当检测到是否要收集进一步的调试信息的软锁定条件时,此值控制软锁定检测器线程的行为。如果启用,将向每个cpu发出NMI并指示其捕获堆栈跟踪。
此功能仅适用于支持NMI的体系结构。
0:什么都不做。这是默认行为。
1:在检测时捕获更多调试信息。
tainted
如果内核已被污染,则为非零值。数值,可以进行或运算。这些字母显示在Oops报告的“Tainted”行中。
当内核被污染时,某些调试功能和API调用可能会被禁用。
内核可能由于以下几种原因而受到污染,包括(但不限于)以下几种原因:
- 使用专有(或非GPL兼容)内核模块-这是内核受污染的最常见原因,通常是由于加载专有NVIDIA或AMD视频驱动程序导致的
- staging 驱动程序的使用,它是内核源代码的一部分,但尚未经过全面测试
- 使用Linux内核源代码未包含的out-of-tree模块
- 强制加载或卸载内核模块(例如,强制插入不是为当前内核版本构建的模块)
- 在某些不受支持的单处理器CPU(主要是较旧的AMD Athlon处理器)上使用SMP(多处理器)内核
- 重写ACPI DSDT,有时需要更正电源管理错误
- 某些关键错误条件,例如machine check exceptions 和 kernel oopses
- 系统固件(BIOS,UEFI)中内核必须解决的某些严重错误
threads-max
此值控制可以使用fork()创建的最大线程数。
在初始化期间,内核设置该值,使得即使创建了最大线程数,线程结构仅占用可用RAM页的一部分。
可以写入threads-max的最小值为1。
可以写入线程最大值的最大值由常数 FUTEX_TID_MASK(0x3fffffff)给出。
如果将超出此范围的值写入threads-max,则会发生EINVAL错误。
unknown_nmi_panic
此文件中的值会影响处理NMI的行为。当该值不为零时,将捕获未知的NMI,然后发生panic。那时,控制台上会显示内核调试信息。
例如,大多数IA32服务器具有的NMI开关会启动未知的NMI。如果系统挂断,请尝试按NMI开关。
watchdog
此参数可用于同时禁用或启用软锁定检测器和NMI看门狗(即硬锁定检测器)。
0:禁用两个锁定检测器
1:启用两个锁定检测器
也可以使用soft_watchdog和nmi_watchdog参数分别禁用或启用软锁定检测器和NMI看门狗。如果读取了看门狗参数,例如通过执行以下命令:
cat /proc/sys/kernel/watchdog
此命令(0或1)的输出显示软监视器和nmi监视器的逻辑或。
watchdog_cpumask
此值可用于控制看门狗可以在哪个CPU上运行。默认的cpumask是所有可能的核心,但是如果在内核配置中启用了NO_HZ_FULL,并且使用nohz_full = boot参数指定了核心,则默认情况下将排除这些核心。脱机内核可以包含在此掩码中,如果以后使内核联机,则将根据掩码值启动看门狗。
通常,只有在nohz_full情况下才会触及此值,以重新启用默认情况下不运行监视程序的内核(如果怀疑这些内核上存在内核锁定)。
参数值是cpumask的标准cpulist格式,例如,要在内核0、2、3和4上启用看门狗,可以使用如下命令:
echo 0,2-4 > /proc/sys/kernel/watchdog_cpumask
watchdog_thresh
此值可用于控制hrtimer和NMI事件的频率以及软、硬锁定阈值。默认阈值为10秒。
软锁定阈值为(2 * watchdog_thresh)。将此可调参数设置为零将完全禁用锁定检测。
参考文档
https://www.kernel.org/doc/html/latest/admin-guide/sysctl/kernel.html