![为什么内核进程统计不起作用?](https://linux22.com/image/15701/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%86%85%E6%A0%B8%E8%BF%9B%E7%A8%8B%E7%BB%9F%E8%AE%A1%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我在启动后不久就打开了进程记帐/usr/sbin/accton on
,但没有记录任何内容。
使用默认文件:/var/log/account/pacct
从该文件获取输出的所有命令都是空的,因为该文件是空的:
dump-acct /var/log/account/pacct
空的。lastcomm
和 也是如此sa -a
。空的。
5.8内核已经CONFIG_BSD_PROCESS_ACCT
开启/boot/config*
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
少了什么东西?
这是带有 Mate 桌面的全新安装的 Ubuntu 20.04.2。
答案1
该accton
命令的主要作用是运行单个系统调用:acct(2)
如跟踪命令时所见:
acct("/var/log/account/pacct") = 0
其余的由内核处理。由于进程记账会产生大量日志内核定期检查文件系统中可用空间的百分比并暂停记帐,直到出现足够的空间。有的是kernel.acct
sysctl 为此。默认情况下,触发器值为:
4 2 30
即,如果可用空间下降到2%以下,则暂停计费;如果增加到至少 4%,则恢复;考虑有关 30 秒有效的可用空间量的信息。
来自OP的评论,看起来 4.8Gb 是免费的,但这些仅占文件系统的 1%:内核进程计数被暂停。
所以这是文件系统接近满的情况。
一旦可用空间达到约 9.6Gb(约 4%),会计将在接下来的 30 秒内恢复。或者可能只是使用新的系统调用和 > 2%?
仍然有可能将百分比减半至 1%,以使 OP 的案例核算工作直到 <2.4Gb,但不能做更多的事情。使用 0% 是不明智的。
OP 选择增加文件系统大小来解决问题。