스왑 메모리 란 무엇입니까?


26

일부 데이터베이스 테이블을 저장하기 위해 RAM을 사용하고 있고 다른 테이블은 하드 디스크에 저장되어 있습니다.

오늘 나는 내 프로세스가 스왑 메모리를 사용하고 있음을 알게되었습니다. 이제 스왑 메모리 란 무엇이며 어떤 프로세스가 스왑 메모리를 사용하고 있는지 어떻게 감지 할 수 있습니까?


어떤 프로세스가 스왑 메모리를 사용하고 있는지 알 수있는 방법이 없습니까 ???

사용 된 페이지 파일 양과 페이지 결함에 대해서는 Windows 작업 관리자 (또는 유사한 도구)를보십시오.

스왑은 프로세스 단위가 아니며 전체 OS를위한 것입니다. "vmstat"는 사용중인 스왑 양에 대한 정보를 표시합니다.
jrockway

나는 Wimdows가 아닌 리눅스에서 일하고있다

우리 side.Thanks에서 모든 원인없이 발생하는 전체 thng의 WS는 귀하의 답변에 대한 모든 것이 :-) 많은 항상 저를 도와 왜 누군가가 내 사이트 먹으 렴을 구문 분석하려고했다 .....이 스왑 사용의 이유를 가지고

답변:


41

실제 메모리가 부족하면 디스크의 메모리에 데이터를 저장하는 가상 메모리를 사용합니다. 디스크에서 읽는 것은 메모리에서 읽는 것보다 몇 배나 느리므로 모든 것이 느려집니다. 실제 메모리와 가상 메모리 간의 데이터 교환은 "스와핑"입니다. 디스크의 공간은 "스왑 공간"입니다.

앱이 "스왑을 사용하는"경우 메모리를 적게 사용하거나 더 많은 RAM을 구매해야합니다.

(스왑은 사용하지 않는 응용 프로그램을 사용할 때까지 디스크에 저장할 수 있기 때문에 유용합니다. 그런 다음 "페이지 인"하고 다시 정상적으로 실행할 수 있습니다. 메모리에없는 동안 OS는 해당 메모리를 사용할 수 있습니다. 디스크 캐시와 같은 다른 용도로 사용할 수 있으므로 매우 유용한 기능이지만 프로그램을 실행할 물리적 메모리가 충분하지 않으면 더 많은 메모리가 필요합니다. 다행히 요즘 메모리는 실제로 저렴합니다.)


1
정확성을 위해 : 가상 메모리는 가상 메모리 주소 (현재 사용 가능한 RAM 수에 관계없이 항상 최신 CPU에서 활성화되는 것)를 사용하는 것을 의미하며 스왑과 직접 관련이 없습니다 (조합하여 사용하더라도) 기본적으로 다른 개념).
포트란

@fortran, 이중 정확성을 위해 가상 메모리는 페이징 (스왑) 파일을 나타낼 때 Windows에서 사용하는 용어입니다 .
sleblanc

7

컴퓨터에는 특정 양의 물리적 메모리가 있습니다. 그러나 대부분 우리는 더 많은 것을 원합니다. 따라서 디스크의 일부 메모리를 교체합니다.

메모리가 필요할 때마다 다시 메모리로 교체해야합니다 (다른 부분을 교체). 지연을 최소화하는 매우 지능적인 알고리즘이 있지만 때로는 기다려야하는 경우가 있습니다.

창에서 작업 관리자를 보면 열 페이지 결함을 표시 할 수 있습니다. 이것은 애플리케이션이 디스크에 있고 스왑해야하는 메모리를 요청하는 시간을 나타냅니다. 많은 페이지 오류 = 응용 프로그램 속도가 느립니다.

이 프로세스는 여러 수준에서 사용됩니다. 빠름에서 느림으로 요약 :

  • CPU 레벨에는 레지스터가 있습니다. 이들은 가장 빠른 메모리이지만 양이 제한됩니다.
  • 또한 CPU에는 작은 메모리 캐시가 있습니다. 여기에는 빠른 실행을 위해 작은 실행 프로그램이 저장됩니다. 더 알고 싶다면 분기 예측 알고리즘을 검색하십시오.
  • 때때로 CPU와 주 메모리 사이에 레벨 2 캐시가 있습니다.
  • 다음 레벨은 메인 메모리 (RAM)입니다.
  • 마지막 단계는 가장 느린 디스크이며 때로는 USB 스틱을 추가 메모리로 사용할 수 있습니다.

3
cat /proc/pid/smaps

스왑을 사용하지 않으려면 스왑 파티션을 사용하지 마십시오 (에서 주석 처리하십시오 /etc/fstab). 그렇지 않으면 새 프로세스가 시작되지 않으며 실제 메모리가 부족하면 malloc이 실패합니다. OS가 핫 페이지를 메모리에 유지하고 최근에 사용하지 않는 디스크로 스왑하기 때문에 일반적으로 좋은 생각은 아닙니다 ... 매우 안전하지 않고 유용하지도 않습니다.

또 다른 해결책은 데이터베이스를 해킹하여 페이지를 메모리에 잠그는 것입니다 (수행 할 수는 있지만 지금은 정확히 어떻게 말할 수는 없습니다). 그러나 어쨌든 데이터베이스가 자체 스와핑을 사용하는 것처럼 보입니다. 캐싱 메커니즘.

스왑이 무엇이고 가상 메모리가 어떻게 작동하는지 알기 위해서는 MIT 오픈 코스웨어가 도움이 될 수있는 운영 체제 강의를 살펴 보는 것이 좋습니다.


많은 리눅스 배포판의 기본 설정은 메모리를 오버 커밋하는 것이므로, "최악의"것은 OOM 킬러가 스니핑 프로세스를 시작하고 DBMS (그리고 아마도 RAM에 저장된 테이블)로 시작하는 것입니다. 의회).
symcbean

1

부분적으로 답변을 찾았습니다. 스왑 메모리는 운영 체제가 실제로 RAM에있는 정보를 다른 응용 프로그램에 사용할 수 있도록 RAM에 저장하는 데 사용하는 컴퓨터 하드 디스크의 공간입니다. 시스템에 새로운 프로세스를위한 메모리가 필요할 때 수행해야 할 것이 없기 때문에 시스템에 충분한 RAM이 있으면 SWAP 메모리가 필요하지 않을 수 있습니다.

최신 정보

스왑 공간 (또는 가상 메모리) 위치를 확인하려면 작업 관리자 (CTRL + ALT + DEL)로 이동하여보기-> 열-> 가상 메모리에서 켤 수 있습니다. 이제 메모리 사용량과 가상 메모리의 차이를 계산하십시오. 또한 Vista를 실행중인 경우 확인 방법은 다음과 같습니다. http://www.ehow.com/how_5067693_increase-swap-space.html


-1

스왑은 RAM으로 사용되는 하드 디스크 공간입니다. (상대적으로 말하면) 매우 느리지 만 RAM이 처리 할 수있는 것보다 많은 데이터를 처리하려고 할 때 컴퓨터가 충돌하는 것을 막습니다.

프로세스가 스왑을 사용하지 못하게하려면 RAM을 더 설치하십시오.


1
스와핑을 원하지 않으면 페이지 파일 사용을 중지하십시오. 그러나 다른 문제를 예상하십시오.

1
그렇지 않습니다. 스와핑은 데이터 블록을 이동 으로부터 물리적 메모리로 하드 디스크. 일회성 읽기로 일반적으로 충분히 빠릅니다.

@ xtofl 대답은 ​​스왑을 언급하지 않고 파티션을 스왑 만 언급했으며 gamecat의 의견은 말한 것과 관련이 없었습니까? : P
RapidWebs

-1

프로세스에서 스왑 메모리를 사용하지 않으려면 스왑 메모리를 모두 비활성화하십시오. 불행히도 메모리가 부족한 경우 Linux 커널은 사용중인 메모리를 확보하기 위해 실행중인 프로세스 중 일부를 종료합니다.

시스템에 충분한 RAM이있는 경우 실제로 스왑 메모리없이 이동할 수 있습니다.

스왑 메모리를 사용하지 않는 RAM이 768Mb 인 랩톱이 있습니다. 내 필요에 충분합니다. 256MB의 RAM이있는 서버가 있으며 스왑 메모리를 사용하지 않습니다. OpenVZ 가상화를 사용하여 8 개의 가상 서버를 실행하고 있습니다.

따라서 스왑 메모리가 필요한 경우 사용자에게 달려 있습니다.


어떻게 당신이 실행하는 8 개 256있는 컴퓨터에서 VM을 메가 바이트 의 RAM?!?
워렌

공통 라이브러리가 VM간에 공유되거나 그에 영향을주는 것으로 RAM이 완전히 분할되지 않았기 때문에 VZ에서 가능합니다. 따라서 8 x 64M이 반드시 512M 일 필요는 없습니다. :)
sybreon 2016 년

그럼에도 불구하고 기본 장치는 어떻게 안정적으로 작동합니까?
warren

비활성 프로그램을 교체하면 파일 캐싱을위한 더 많은 메모리가 있습니다. 그리고 그것은 속도를 향상시킵니다. 이 한 번 읽은 내용은 일반적으로 상당히 빠르며 전반적으로 무시할만한 영향을 미칩니다. 사용 가능한 RAM과 관련하여 한계를 벗어날 때만 사용되지는 않습니다. RAM이 16GB 인 머신이 SWAP을 사용하는 것을 보았습니다.
RapidWebs

또한 데이터베이스 서버에서 SWAP를 비활성화하지 않는 것이 좋습니다. OOM이 간단한 야간 백업 작업 또는 이와 유사한 작업을 통해 백엔드를 죽일 때 그의 고객 또는 웹 응용 프로그램은 매우 기뻐하지 않습니까? 응용 프로그램 사용 및 사용 가능한 메모리와 관련하여 데이터베이스 캐시를 조정하는 것이 더 지능적입니다. 이미 스왑중인 경우 더 많은 램이 필요하거나 DB 서버를 더 잘 구성해야합니다. 그렇지 않으면 SWAP를 비활성화하면 스왑 할 때마다 OOM이 강제로 DB 서버를 강제 종료합니다. 그의 질문으로 판단되는 경우가 종종 있습니다.
RapidWebs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.