모든 스왑을 지우는 것이 필요하거나 현명한가요?

모든 스왑을 지우는 것이 필요하거나 현명한가요?

때때로 스왑 파티션이 가득 차는 Linux 상자가 있습니다. 사용 가능한 RAM이 여전히 충분하므로 메모리가 부족할 위험이 없습니다.
전체 스왑이 발생하면 일반적인 작업 과정은 swapoff -a && swapon -a스왑을 완전히 지우는 것입니다.

내 질문:

  1. 전체 스왑 파티션은 먼저 주의가 필요한 문제입니까, 아니면 무시할 수 있는 "정상적인" 문제입니까?
  2. 스왑을 껐다가 켜는 것이 좋은 일입니까, 아니면 커널이 스왑 공간을 정리하느라 바빠서 상황이 더 악화됩니까?
  3. 더 나은(또는 최선의) 대응 방법은 무엇입니까?

답변1

스왑 영역을 지우는 것은 필요하지도 유용하지도 않습니다. 읽다Linuxatemyram.

커널은 상당히 효율적인페이지 캐시. 따라서 RAM은 유용한 데이터(예: 최근에 액세스한 파일 세그먼트 블록 또는 힙 메모리)를 저장하는 데 사용되고 덜 유용한 데이터는 스왑 영역으로 교체됩니다.

스왑 영역이 너무 작을 수도 있습니다. 파일로 바꿀 수도 있습니다. 보다이것.

답변2

내 경험상 전체 스왑 파티션은 메모리 사용량이 높은 경우에만 발생합니다. 이 경우 스왑에서 모든 항목을 로드할 메모리가 충분하지 않을 수 있으므로 스왑을 비활성화하면 문제가 될 수 있습니다.

사용 가능한 메모리가 부족할 때 스왑을 비활성화하려고 하면 시스템이 응답하지 않거나 메모리를 확보하기 위해 프로세스를 종료하기 시작할 수 있습니다.

메모리 사용량이 높았다가 떨어지면 스왑 활용도가 높을 수 있지만 메모리가 해제된 원인이 무엇이든 적어도 몇 페이지의 스왑이 해제되었을 가능성이 높기 때문에 100%로 보면 놀랄 것입니다. .

메모리 사용량이 감소한 후에 스왑을 비활성화하면 많은 문제가 발생하지 않을 수 있습니다. 그러나 나는 또한 당신이 시스템 성능을 위해 좋은 일을 하고 있다고 생각하지 않습니다.

전체 스왑이 포함된 시스템을 볼 때마다 더 많은 스왑을 추가하여 성능을 향상시킬 수 있습니다.

답변3

다른 답변에서 말했듯이 스왑을 수동으로 지우는 것은 좋은 생각이 아닙니다. 그러나 스왑과 메모리가 모두 꽉 차서 이로 인해 다른 프로그램을 실행할 수 없는 경우 문제가 있을 수 있습니다.

이 경우 htop실행을 클릭하고 메모리 사용량별로 정렬합니다 MEM%. 이렇게 하면 많은 메모리를 사용하는 프로그램을 찾을 수 있습니다. 거기에 맞지 않는 것 같은 것을 발견했다면(예를 들어 작은 유틸리티 프로그램) Google에 접속하여 프로그램에 알려진 메모리 누수가 있는지 알아보세요. 가능성은 낮지만 일어날 수 있습니다.

내 경우에는 i3 알림 관리자를 찾았습니다.Dunst에 메모리 누수가 발생했습니다.이는 알려져 있고 수정되었지만 수정된 버전이 내 배포 저장소에 없습니다.

관련 정보