프로세스 메모리 사용량 제한을 설정하는 방법은 무엇입니까?
열린 파일 제한과 유사합니다 /etc/security/limits.conf
.
ubuntu soft nofile 4096
ubuntu hard nofile 8192
예를 들어, eval
1.1G 파일의 원시 json 데이터가 포함된 Python 스크립트를 실행하면 Python은 각각에서 실행되는 동안 전체 RAM을 소비하고 dict
내 컴퓨터가 20~30분 동안 중단됩니다. 그후에:list
json.txt
# python read_data.py
Killed
우분투 시스템은 오늘날 매우 안정적입니다. 일시 중지 상태에서 다시 시작됩니다. 스왑 사용량이 8GB에 도달했습니다. RAM이 완전히 비어 있고 스크립트가 실행 중입니다.
killed
내 스크립트가 이 제한을 구성할 수 있는지 알고 싶습니다 . 시스템을 이렇게 조정할 수 있나요? 현재 RAM 크기의 70% 이상을 차지하는 모든 프로세스는 종료되거나 중지됩니다.
답변1
동일한 파일을 사용하면 limits.conf
다음을 제한할 수 있습니다.
data
- 최대 데이터 크기(KB)memlock
- 최대 잠긴 메모리 주소 공간(KB)rss
- 최대 상주 세트 크기(KB)as
- 주소 공간 제한(KB)stack
- 최대 스택 크기(KB)
그래서 당신은 꽤 많은 일을 할 수 있습니다. 한계를 설정한 후 ulimit -a
→를 사용하여 이 수준을 확인할 수 있으며, 이 프로그램을 사용하여 설정할 수도 있습니다. 사용하려면 limits.conf
가 필요합니다 pam_limits.so
.
마지막 것은 스크립트를 죽이는 것입니다. 나는 이것이 OOM 킬러일지도 모른다고 생각합니다. 실제 메모리를 모두 소모할 때 오작동하는 프로세스를 종료하는 Linux 커널의 기능입니다. ;) dmesg
Killer가 사용되는지 확인하는 데 사용됩니다. 종료할 후보 프로세스와 종료된 프로세스에 대한 많은 정보가 있을 것입니다.
건배,