sudo swapoff -a
스왑(또는 테스트 전 실행) 이 없는 Linux 시스템 에 대한 최소 테스트 사례입니다. 일반 사용자로 다음 bash 행을 실행하십시오.
while true; do date; nice -20 stress --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 + 4000;}' < /proc/meminfo)k --vm-keep -m 1 --timeout 10s; sleep 5s; done
그리고 우선 순위가 높은 루트 셸을 사용하여 다음 bash 단일 라이너(예 sudo nice -n -19 bash
: )를 실행합니다.
while true; do NS=$(date '+%N' | sed 's/^0*//'); let "S=998000000 - $NS"; S=$(( S > 0 ? S : 0)); LC_ALL=C sleep "0.$S"; date --iso=ns; done
우선순위가 높은 프로세스는 date
매초마다 최대한 정확하게 실행되어야 합니다. 그러나 프로세스가 우선 순위로 실행 중이더라도 -19
우선 순위로 실행되는 백그라운드 프로세스로 20
인해 상당한 지연이 발생할 수 있습니다. 값을 늘리면 더 높은 대기 시간이 활성화될 수 있으므로 우선 순위가 낮은 백그라운드 프로세스로 인해 발생하는 대기 시간에는 제한이 없는 것으로 보입니다 stress --timeout
.
stress
이를 달성하기 위해 최대 지연을 제한하고 (필요한 경우) 자동으로 종료하는 방법이 있습니까 ?추가 /proc/sys/vm/user_reserve_kbytes
또는 /proc/sys/vm/admin_reserve_kbytes
또는 /proc/sys/vm/min_free_kbytes
도움이되지 않는 것 같습니다.
답변1
*커널 패치를 사용해 보세요.이것질문입니다. 지금까지는 제게는 작업을 수행하는 것 같았고(oom 주변의 높은 대기 시간 방지)(질문의 코드를 사용하여 테스트하기도 했습니다), 디스크 스래싱도 많이 피했습니다(예: 컴파일할 때). Firefox) 메모리 부족으로 인해 운영 체제가 정지되는 경우가 많습니다.
패치는 Active(file)
페이지 제거를 방지하여 (적어도) 실행 가능한 코드 페이지를 RAM에 유지하여 컨텍스트 전환으로 인해 발생하는 문제를 방지합니다.kswapd0(?) 다시 읽습니다(이로 인해 많은 디스크 읽기가 발생하고운영 체제 동결).
* 아니면 더 나은 방법을 제안하시겠습니까?