OOM과 가까운 대기 시간이 긴 상황을 피하는 방법은 무엇입니까?

OOM과 가까운 대기 시간이 긴 상황을 피하는 방법은 무엇입니까?

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(?) 다시 읽습니다(이로 인해 많은 디스크 읽기가 발생하고운영 체제 동결).

* 아니면 더 나은 방법을 제안하시겠습니까?

답변2

복잡성/구성 가능성이 증가하는 이러한 특정 문제를 방지하기 위해 설계된 도구가 있습니다.

  • 아침, 아마도 데스크톱/노트북에 충분할 것입니다.
  • 누오항, 보다 구성 가능한 솔루션
  • 페이스북의 솔루션자체 서버를 위해.

관련 정보