일부 데이터베이스 테이블을 저장하기 위해 RAM을 사용하고 있고 다른 테이블은 하드 디스크에 저장되어 있습니다.
오늘 나는 내 프로세스가 스왑 메모리를 사용하고 있음을 알게되었습니다. 이제 스왑 메모리 란 무엇이며 어떤 프로세스가 스왑 메모리를 사용하고 있는지 어떻게 감지 할 수 있습니까?
답변
실제 메모리가 부족하면 디스크의 메모리에 데이터를 저장하는 가상 메모리를 사용합니다. 디스크에서 읽는 것은 메모리에서 읽는 것보다 몇 배나 느리므로 모든 것이 느려집니다. 실제 메모리와 가상 메모리 간의 데이터 교환은 “스와핑”입니다. 디스크의 공간은 “스왑 공간”입니다.
앱이 “스왑을 사용하는”경우 메모리를 적게 사용하거나 더 많은 RAM을 구매해야합니다.
(스왑은 사용하지 않는 응용 프로그램을 사용할 때까지 디스크에 저장할 수 있기 때문에 유용합니다. 그런 다음 “페이지 인”하고 다시 정상적으로 실행할 수 있습니다. 메모리에없는 동안 OS는 해당 메모리를 사용할 수 있습니다. 디스크 캐시와 같은 다른 용도로 사용할 수 있으므로 매우 유용한 기능이지만 프로그램을 실행할 물리적 메모리가 충분하지 않으면 더 많은 메모리가 필요합니다. 다행히 요즘 메모리는 실제로 저렴합니다.)
답변
컴퓨터에는 특정 양의 물리적 메모리가 있습니다. 그러나 대부분 우리는 더 많은 것을 원합니다. 따라서 디스크의 일부 메모리를 교체합니다.
메모리가 필요할 때마다 다시 메모리로 교체해야합니다 (다른 부분을 교체). 지연을 최소화하는 매우 지능적인 알고리즘이 있지만 때로는 기다려야하는 경우가 있습니다.
창에서 작업 관리자를 보면 열 페이지 결함을 표시 할 수 있습니다. 이것은 애플리케이션이 디스크에 있고 스왑해야하는 메모리를 요청하는 시간을 나타냅니다. 많은 페이지 오류 = 응용 프로그램 속도가 느립니다.
이 프로세스는 여러 수준에서 사용됩니다. 빠름에서 느림으로 요약 :
- CPU 레벨에는 레지스터가 있습니다. 이들은 가장 빠른 메모리이지만 양이 제한됩니다.
- 또한 CPU에는 작은 메모리 캐시가 있습니다. 여기에는 빠른 실행을 위해 작은 실행 프로그램이 저장됩니다. 더 알고 싶다면 분기 예측 알고리즘을 검색하십시오.
- 때때로 CPU와 주 메모리 사이에 레벨 2 캐시가 있습니다.
- 다음 레벨은 메인 메모리 (RAM)입니다.
- 마지막 단계는 가장 느린 디스크이며 때로는 USB 스틱을 추가 메모리로 사용할 수 있습니다.
답변
cat /proc/pid/smaps
스왑을 사용하지 않으려면 스왑 파티션을 사용하지 마십시오 (에서 주석 처리하십시오 /etc/fstab
). 그렇지 않으면 새 프로세스가 시작되지 않으며 실제 메모리가 부족하면 malloc이 실패합니다. OS가 핫 페이지를 메모리에 유지하고 최근에 사용하지 않는 디스크로 스왑하기 때문에 일반적으로 좋은 생각은 아닙니다 … 매우 안전하지 않고 유용하지도 않습니다.
또 다른 해결책은 데이터베이스를 해킹하여 페이지를 메모리에 잠그는 것입니다 (수행 할 수는 있지만 지금은 정확히 어떻게 말할 수는 없습니다). 그러나 어쨌든 데이터베이스가 자체 스와핑을 사용하는 것처럼 보입니다. 캐싱 메커니즘.
스왑이 무엇이고 가상 메모리가 어떻게 작동하는지 알기 위해서는 MIT 오픈 코스웨어가 도움이 될 수있는 운영 체제 강의를 살펴 보는 것이 좋습니다.
답변
부분적으로 답변을 찾았습니다. 스왑 메모리는 운영 체제가 실제로 RAM에있는 정보를 다른 응용 프로그램에 사용할 수 있도록 RAM에 저장하는 데 사용하는 컴퓨터 하드 디스크의 공간입니다. 시스템에 새로운 프로세스를위한 메모리가 필요할 때 수행해야 할 것이 없기 때문에 시스템에 충분한 RAM이 있으면 SWAP 메모리가 필요하지 않을 수 있습니다.
최신 정보
스왑 공간 (또는 가상 메모리) 위치를 확인하려면 작업 관리자 (CTRL + ALT + DEL)로 이동하여보기-> 열-> 가상 메모리에서 켤 수 있습니다. 이제 메모리 사용량과 가상 메모리의 차이를 계산하십시오. 또한 Vista를 실행중인 경우 확인 방법은 다음과 같습니다.
http://www.ehow.com/how_5067693_increase-swap-space.html
답변
스왑은 RAM으로 사용되는 하드 디스크 공간입니다. (상대적으로 말하면) 매우 느리지 만 RAM이 처리 할 수있는 것보다 많은 데이터를 처리하려고 할 때 컴퓨터가 충돌하는 것을 막습니다.
프로세스가 스왑을 사용하지 못하게하려면 RAM을 더 설치하십시오.
답변
프로세스에서 스왑 메모리를 사용하지 않으려면 스왑 메모리를 모두 비활성화하십시오. 불행히도 메모리가 부족한 경우 Linux 커널은 사용중인 메모리를 확보하기 위해 실행중인 프로세스 중 일부를 종료합니다.
시스템에 충분한 RAM이있는 경우 실제로 스왑 메모리없이 이동할 수 있습니다.
스왑 메모리를 사용하지 않는 RAM이 768Mb 인 랩톱이 있습니다. 내 필요에 충분합니다. 256MB의 RAM이있는 서버가 있으며 스왑 메모리를 사용하지 않습니다. OpenVZ 가상화를 사용하여 8 개의 가상 서버를 실행하고 있습니다.
따라서 스왑 메모리가 필요한 경우 사용자에게 달려 있습니다.