简单 Bash 脚本的模糊/不确定行为

简单 Bash 脚本的模糊/不确定行为
[root@localhost ~]# time cpumode 
Driver:   acpi-cpufreq
Boost:    disabled
Governor: ondemand
Average and maximum frequencies now: 2159MHz 2929MHz
Maximum allowed frequency is 3800MHz (out of 4928MHz)

real    0m0.214s
user    0m0.017s
sys 0m0.011s
[root@localhost ~]# time cpumode 
Driver:   acpi-cpufreq
Boost:    disabled
Governor: ondemand
Average and maximum frequencies now: 2431MHz 2738MHz
Maximum allowed frequency is 3800MHz (out of 4928MHz)

real    0m0.024s
user    0m0.018s
sys 0m0.013s

脚本运行所需的时间几乎有一个数量级的差异,而且是随机发生的。

不知道怎么可能。启用调试(取消前两行注释)时,脚本总是在 0.134 秒左右执行。

如果这在您的 PC/笔记本电脑上无法重现,请不要打扰。这是我一生中从未见过的奇怪现象,我无法解释。我可以通过以下方式运行它strace -f -t,但这不是我现在愿意做的事情;-)


在 Linux 5.19.4 中,我无法再重现此行为。

答案1

我也得到了类似的差异,这似乎与跨 CPU 调度进程的方式有关。

在“慢速”运行时,我得到的输出如下

./cpumode > /dev/null  0.03s user 0.01s system 19% cpu 0.189 total

或者

0.03user 0.01system 0:00.20elapsed 21%CPU (0avgtext+0avgdata 4004maxresident)k
0inputs+0outputs (0major+5720minor)pagefaults 0swaps

(分别使用zshstime和 GNU time;重定向到> /dev/null两者,因为我不关心输出并消除终端延迟(如果它们是一个因素)。

在快速跑步时,我得到

./cpumode > /dev/null  0.03s user 0.02s system 125% cpu 0.035 total

或者

0.03user 0.01system 0:00.03elapsed 125%CPU (0avgtext+0avgdata 4092maxresident)k
0inputs+0outputs (0major+5668minor)pagefaults 0swaps

请注意 CPU 分配的差异。

相关内容