때때로 스왑 파티션이 가득 차는 Linux 상자가 있습니다. 사용 가능한 RAM이 여전히 충분하므로 메모리가 부족할 위험이 없습니다.
전체 스왑이 발생하면 일반적인 작업 과정은 swapoff -a && swapon -a
스왑을 완전히 지우는 것입니다.
내 질문:
- 전체 스왑 파티션은 먼저 주의가 필요한 문제입니까, 아니면 무시할 수 있는 "정상적인" 문제입니까?
- 스왑을 껐다가 켜는 것이 좋은 일입니까, 아니면 커널이 스왑 공간을 정리하느라 바빠서 상황이 더 악화됩니까?
- 더 나은(또는 최선의) 대응 방법은 무엇입니까?
답변1
스왑 영역을 지우는 것은 필요하지도 유용하지도 않습니다. 읽다Linuxatemyram.
커널은 상당히 효율적인페이지 캐시. 따라서 RAM은 유용한 데이터(예: 최근에 액세스한 파일 세그먼트 블록 또는 힙 메모리)를 저장하는 데 사용되고 덜 유용한 데이터는 스왑 영역으로 교체됩니다.
스왑 영역이 너무 작을 수도 있습니다. 파일로 바꿀 수도 있습니다. 보다이것.
답변2
내 경험상 전체 스왑 파티션은 메모리 사용량이 높은 경우에만 발생합니다. 이 경우 스왑에서 모든 항목을 로드할 메모리가 충분하지 않을 수 있으므로 스왑을 비활성화하면 문제가 될 수 있습니다.
사용 가능한 메모리가 부족할 때 스왑을 비활성화하려고 하면 시스템이 응답하지 않거나 메모리를 확보하기 위해 프로세스를 종료하기 시작할 수 있습니다.
메모리 사용량이 높았다가 떨어지면 스왑 활용도가 높을 수 있지만 메모리가 해제된 원인이 무엇이든 적어도 몇 페이지의 스왑이 해제되었을 가능성이 높기 때문에 100%로 보면 놀랄 것입니다. .
메모리 사용량이 감소한 후에 스왑을 비활성화하면 많은 문제가 발생하지 않을 수 있습니다. 그러나 나는 또한 당신이 시스템 성능을 위해 좋은 일을 하고 있다고 생각하지 않습니다.
전체 스왑이 포함된 시스템을 볼 때마다 더 많은 스왑을 추가하여 성능을 향상시킬 수 있습니다.
답변3
다른 답변에서 말했듯이 스왑을 수동으로 지우는 것은 좋은 생각이 아닙니다. 그러나 스왑과 메모리가 모두 꽉 차서 이로 인해 다른 프로그램을 실행할 수 없는 경우 문제가 있을 수 있습니다.
이 경우 htop
실행을 클릭하고 메모리 사용량별로 정렬합니다 MEM%
. 이렇게 하면 많은 메모리를 사용하는 프로그램을 찾을 수 있습니다. 거기에 맞지 않는 것 같은 것을 발견했다면(예를 들어 작은 유틸리티 프로그램) Google에 접속하여 프로그램에 알려진 메모리 누수가 있는지 알아보세요. 가능성은 낮지만 일어날 수 있습니다.
내 경우에는 i3 알림 관리자를 찾았습니다.Dunst에 메모리 누수가 발생했습니다.이는 알려져 있고 수정되었지만 수정된 버전이 내 배포 저장소에 없습니다.