/proc/sys/vm/extfrag_threshold를 1000으로 설정하는 것이 안전한지 궁금합니다. 이 설정을 변경하면 어떤 결과가 발생합니까? 기본값은 500입니다.
1000으로 설정하면 기본적으로 메모리 압축이 비활성화됩니까? 이는 시간이 지나도 메모리 조각 모음이 수행되지 않는다는 의미입니까?
메모리 압축으로 인해 시스템이 메모리 부족으로 중단되는 상황이 발생했는데, extfrag_thres를 1000으로 설정하면 중단이 중지되고 성능이 향상되었습니다. 990으로 설정해도 도움이 되지 않으며 1000으로 설정하면 도움이 됩니다.
답변1
예, 이것이 메모리 압축을 완전히 비활성화하고 시간이 지남에 따라 조각화가 증가할 수 있다고 생각합니다. 즉, 기능이 비활성화된 경우에도 재활용을 통해 RAM을 확보할 수 있습니다. 즉, 디스크 캐시를 비우고 스왑(스왑이 활성화된 경우)하고 실행 파일 매핑을 해제합니다(다음에 프로그램의 특정 부분을 실행할 때 디스크의 실행 파일에서 다시 로드해야 함).
직관적이지 않게(적어도 나에게는) 이 값은 메모리가 얼마나 조각화되어 있는지 실제로 나타내지는 않습니다. 영역의 여유 RAM이 충분히 낮을 때 0에 가까워지는 경향이 있어 압축이 실패할 가능성이 더 높아집니다. extfrag_threshold 용어로 -1.000 또는 -1000인 이 크기의 메모리 할당입니다. 압축을 비활성화하면 성능이 저하될 수 있지만(예: 디스크를 사용하려고 하면 디스크 캐시가 반복적으로 삭제됨) 전체 메모리가 실제로 부족하지 않는 한 메모리 부족 상황이 발생하지는 않을 것이라고 생각합니다. 따라서 특정 워크로드 실행을 더 좋게 만든다면 이를 선택하십시오.