setpriority
나는 nice
당신이 프로세스를 얼마나 잘 사용하거나 변경할 수 있는지 알고 있습니다 renice
.
그런데 Linux는 사용자 입력 없이 프로세스 성능을 자동으로 조정/변경합니까?
setpriority
다음과 같이 C에서 사용하는 절차가 있습니다 .
setpriority(PRIO_PROCESS, 0, -1)
프로세스가 실행 중일 때 다음을 실행하면 niceness 값이 -1임을 알 수 있습니다.맨 위.
원격 시스템의 충돌을 조사하는 동안 htop의 출력을 받았습니다. 이 프로세스의 적절한 값이 한 인스턴스에서는 0으로 변경되고 다른 인스턴스에서는 6으로 변경된 것으로 나타났습니다. 이것이 커널에 의해 변경되는지, 아니면 값을 변경하는 유일한 방법이 사용자가 값을 변경하도록 하는 것인지, 아니면 스크립트가 의도적으로 변경하는지 알고 싶습니다.
답변1
내가 아는 한, Linux 커널은 프로세스의 장점을 바꾸지 않으며, 프로세스의 우선순위를 낮출 필요가 없기 때문에 왜 그렇게 되는지 이해할 수 없습니다. 친숙함은 프로세스가 얼마나 친숙해질 것인지를 커널에 제공하는 정보입니다. 커널 스케줄러는 프로세스의 우선순위를 변경하기 위해 이 정보를 자유롭게 고려할 수 있지만 해당 값을 변경할 필요는 없습니다.
반면에 사용자 모드에는 다음과 같은 데몬 프로세스가 있습니다.그리고그 임무는 관리자가 설정한 규칙에 따라 프로세스를 다시 시작하는 것입니다. 서버에 그러한 데몬이 설치되어 있습니까?
그러나 AND 데몬은 루트가 소유한 프로세스를 제한하지 않으며 -1
로 우선순위를 설정했기 때문에 setpriority()
여기서도 그렇다고 가정합니다. 그래서 저는 이 멋진 변화의 유일한 이유는 사용자 상호작용이라고 생각합니다.
즉, 이를 사용하고 있기 때문에 키 누르기나 키를 통해 실수로 프로세스를 다시 시작했을 가능성htop
이 있습니다 .]F8