Isso provavelmente depende do que o processo afetado faz, em particular de quantos e quais chamadas do sistema ele faz. Aqui está um programa não muito bom notnice.asm
que pode mostrar um comportamento próximo do pior caso no que diz respeito ao tempo do sistema
# Linux, x86_64, NASM
bits 64
section .data
letter: db "n"
section .text
global _start
_start: mov rsi,letter
mov rdi,1 ; stdout
mov rdx,1 ; length
_again: ; on assumption above not unset by syscall...
mov rax,1 ; sys_write
syscall
jmp _again
que, mesmo quando executado sob nice -n 19
, ainda deve executar o tempo do sistema:
$ nasm -f elf64 notnice.asm -o notnice.o
$ ld notnice.o -o notnice
$ nice -n 19 ./notnice >/dev/null
top
deve mostrar esse processo ocupando 100% de uma CPU, já que está em um loop bastante apertado e pelo menos para meu host de teste centos7 (que tem quatro CPUs por /proc/cpuinfo
) algo como ~ 20 % tempo do sistema, ~ 5% bom e ocioso:
%Cpu(s): 0.1 us, 19.1 sy, 5.9 ni, 74.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
Neste caso, ~ 100% do tempo do sistema é devido ao processo não muito agradável. Com essa execução, também é possível executar processos de prioridade mais alta e verificar como o carregamento do sistema é alterado (e talvez com o SystemTap ou com que frequência sys_write
de notnice
acontece, ou talvez tenha notnice
output em um sistema de arquivos rápido e veja se as taxas de E / S mudam devido a haver processos de prioridade mais alta sobre ...)
O SystemTap pode oferecer melhor granularidade, por exemplo, através do link , embora isso requeira que o processo esteja no espaço do usuário quando a gravação começa.