좋은 프로세스는 얼마나 많은 코어 시간을 유발합니까?

좋은 프로세스는 얼마나 많은 코어 시간을 유발합니까?

원하지 않을 때 실행되는 CPU 사용량 경고가 있습니다.

/proc/stat지피의 성장과 지피의 전반적인 성장을 읽고 비교하고 있었습니다 . 증가율이 충분히 높으면 경고음이 울립니다. 저는 계산에 넣지 않습니다. 주변에 좋은 프로세스가 있지만 필요한 경우 이러한 프로세스가 예정에 없더라도 중요한 프로세스는 계속될 수 있어 기쁩니다.usersystemnice

그런데 알람이 발생하면 %user전혀 상승이 없는 경우가 종종 있습니다. 그러나 증가 %nice하고 %system일부 좋은 프로세스는 커널 작업을 트리거합니다.

내 질문은 다음과 같습니다

  1. 더 중요한 프로세스에 CPU 시간이 필요한 경우 좋은 프로세스(및 해당 프로세스가 트리거하는 커널 작업)의 일정이 취소된다는 것이 맞습니까?
  2. %system좋은 프로세스로 인해 발생한 금액이 얼마나 되는지 어떻게 알 수 있나요 ?

현재 CentOS 6(2.6.32)을 실행 중이지만 이후 버전에서 이 문제가 수정되면 백포트를 고려해 보겠습니다!

답변1

이는 아마도 좋은 프로세스가 수행하는 작업, 특히 문제를 일으키는 시스템 호출 수와 문제를 호출하는 시스템 호출에 따라 달라집니다. 이것은 notnice.asm시스템 시간 측면에서 거의 최악의 동작을 보일 수 있는 좋지 않은 프로그램입니다.

# 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

다음을 실행하는 경우에도 nice -n 19시스템 시간은 계속 실행되어야 합니다 .

$ nasm -f elf64 notnice.asm -o notnice.o
$ ld notnice.o -o notnice
$ nice -n 19 ./notnice >/dev/null

top그런 다음 이 프로세스가 매우 빡빡한 루프에 있기 때문에 CPU의 100%를 차지하고 있음을 보여야 합니다. 적어도 덜 바쁜 다른 centos7 테스트 호스트(각각 4개의 CPU가 있음 /proc/cpuinfo)의 경우 시스템 시간의 약 ~20%입니다. 5%는 꽤 양호하며 기타 유휴 상태는 다음과 같습니다.

%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

이 경우 시스템 시간의 약 100%가 좋지 않은 프로세스로 인해 발생합니다. 이 실행을 통해 우선 순위가 높은 프로세스를 실행한 다음 시스템 로드가 어떻게 변경되는지(아마도 SystemTap 등을 사용하여) 확인 sys_write하거나 빠른 파일 시스템으로 출력하고 우선 순위가 더 높은 프로세스로 인해 I/O 속도가 변경되는지 확인할 수도 있습니다 notnice. notnice...)

SystemTap은 다음을 통해 더 나은 세분성을 제공할 수 있습니다.https://sourceware.org/systemtap/examples/general/stopwatches.stp하지만 이를 위해서는 녹음이 시작될 때 프로세스가 사용자 공간에 있어야 합니다.

관련 정보