스왑은 비 동기화입니까?


43

나는 꽤 오랫동안 유닉스를 사용해 왔으며 지난 몇 년 동안 스왑은 시대에 뒤 떨어진 것처럼 느껴졌지만 다른 사람들이 어떻게 생각하는지 궁금합니다.

내 주장은 대략 이것입니다 (글로벌 ulimit 또는 OOM 설정의 twiddling이 없다고 가정) :

There is little value in swap because if you need to swap out to disk, 
odds are it's going to be a vicious cycle where an app will continue 
to eat not only real memory, but swap as well until it gets OOM 
reaped (_if_ it gets OOM reaped). 

If you have swap enabled, it will only prolong this death march to 
the detriment of other processes - and in the worst case where the
process is not OOM reaped in a timely manner, grind the system to
a halt.

Without swap, it will probably get OOM reaped sooner (if at all)

성능을 위해 조정 된 서비스의 경우, 자원 사용의 상한을 이해하는 것이 처음에이를 조정하는 데 중요 할 것으로 생각되며,이 경우 필요한 양을 알고 있습니다.

나는 당신이 실행중인 프로세스를 중단하고 다른 것들을위한 공간을 만들기 위해 교환 할 수있는 많은 상황 (일부는 아니지만 많지 않은)을 상상할 수는 없지만 그렇게하면 여전히 소켓을 잃을 것입니다. gcc를 통한 코어 덤프 또는 메모리를 직접 복사하는 것은 기능적으로 동일합니다.

램이 부족한 경우 임베디드 시스템에서 스왑을 원하지 않을 것입니다. 램이 부족하면 백만 개의 섹터 당 쓰기 플래시 메모리를 찢는 것보다 프로세스 다이를 원할 것입니다 주말 동안 마모 수준까지웨어 레벨링하여 운전하십시오.

유닉스 수염을 가진 사람들은 스왑을 유지해야 할 강력한 이유가 있습니까?

답변 및 분석 업데이트 :

  • 확인 되었습니까? -fork ()는 자식 프로세스를 위해 부모와 같은 양의 메모리를 요구합니다

    현대 포크 ()는 POSIX (일반적으로)의 어린이를위한 COW ( Copy-On-Write )이지만 LinuxFreeBSD는 구체적이며 OSX를 외삽 법으로 가정합니다. 나는 스왑이 가지고있는 항문 수하물 의이 부분을 고려합니다.

    흥미롭게도이 Solaris 기사에서는 Solaris가 fork ()와 함께 Copy-on-Write를 사용하더라도 사용 가능한 가상 메모리에 2x (!) 이상의 부모 프로세스 크기가 있어야합니다. 가운데. 솔라리스 요소 는 스왑이 시대적이라는 주장을 다소 분열시키는 반면, 충분한 운영 체제는 CoW를 올바르게 구현하여 스왑에 대한 추가 정당화로 표시하는 것보다 신화를 없애는 것이 더 중요하다고 생각합니다. 이후. 현실을 직시하자. 이 시점에서 실제로 Solaris를 사용하는 사람들은 아마도 Oracle 사람 일 것입니다. 공격적인 솔라리스!

  • 확인 -tmpfs / ramfs가 채워질 때 tmpfs / ramfs 파일이 편의로 스왑으로 이동할 수 있음

    무제한 tmpfs / ramfs를 사용하지 마십시오! tmpfs / ramfs에서 사용할 램의 양을 항상 명시 적으로 정의하십시오.

  • 그럴듯한 - '경우에 따라'약간의 교환

    예전의 상사 중 한 명이 '알지 못하는 것을 모른다'는 말을 했었습니다. 본질적으로 아직 모르는 정보를 바탕으로 결정을 내릴 수는 없습니다. 그러나 이것은 나에게 스왑에 대한 그럴듯한 주장입니다. 응용 프로그램이 스왑 아웃되는지 여부를 감지하기 위해 수행해야 할 작업 유형이 malloc ()이 성공했는지 또는 예외를 잡는지를 확인하는 것보다 무거울 것입니다. 실패한 new ().

    이것은 데스크탑을 실행 중이고 임의의 일이 많이 발생하는 경우에 유용 할 수 있지만 여전히 누군가가지나 가면 스왑 지옥으로 뛰어 들기보다는 OOM이 될 것입니다. 그저 나야

  • 파산! -에 솔라리스 , 스왑 입니다 몇 가지 이유로 중요

    tmpfs -states tmpfs에 사용 가능한 여유 공간의 양은 시스템에서 할당되지 않은 스왑 공간의 양에 따라 다릅니다. tmpfs 파일 시스템의 크기는 작성된 파일을 수용하기 위해 커지지 만 tmpfs를 많이 사용하는 사용자에게는 몇 가지 고유 한 상충 관계가 있습니다. Tmpfs는 실행 프로그램의 데이터 및 스택 세그먼트와 리소스를 공유합니다. tmpfs 파일 시스템이 최대 허용 크기에 가까우면 매우 큰 프로그램의 실행에 영향을 줄 수 있습니다. Tmpfs는 4MB의 시스템 스왑 공간을 제외한 모든 공간을 자유롭게 할당 할 수 있습니다.

    스왑 상태 에 대한 Solaris 사실과 신화 오늘날 가상 메모리는 총 실제 RAM과 디스크의 스왑 공간의 총합으로 구성됩니다. Solaris는 스왑 공간을 전혀 구성 할 필요가 없습니다. 이 옵션을 선택하면 RAM이 가득 차면 새 프로세스를 시작할 수 없습니다. .

    이것이 생성 할 수있는 최대 가상 맵이 ram + swap인지 , 또는 ram보다 큰 파일 인 mmap ()과 같은 작업을 수행 할 수 있고 mmap ()의 게으른 초기화에 의존 할 수 있는지 확실 하지 않습니다. 아마도 스왑없이 요즘 Solaris를 잘 실행할 수 있습니다. 다른 POSIXy 운영 체제보다 친숙하지 않은 것 같습니다.

  • 파산! 인기있는 Linux 최대 절전 모드 도구는 스왑에 의존하는 것으로 보입니다

    기본적으로 TuxOnIce 는 다른 백엔드가 존재하지만 최대 절전 모드의 스왑을 사용하는 것처럼 보입니다. 그러나 최대 절전 모드가 필요한 상자를 실행하지 않는 경우 여전히 '스왑은 Linux에서 무의식적입니다'라는 진술 뒤에 서 있습니다.


나는 많은 유닉스 수염이 없지만 (일부 머리카락은 여전히;) 내 2 센트는 "비트"스왑이 있으면 시스템에 견고 함을 줄 것입니다. 직접 OOM 대신 시스템이 약간 초과되면 스왑으로 이동합니다. 물론, 실제로 시스템 한계를 넘어 서면 시스템은 결국 충돌 / 중지 / 누락 자체 / 무슨 상상할 수있는 것입니다. 그래서 약간의 밧줄을 가지고;)
Ouki

1
시스템이 RAM을 초과 커밋하지 않도록 설정 한 경우 fork ()에 대한 것은 사실입니다 (기본값이 아님). 이제 더 이상 그 설정이 필요한 이유는 없습니다. 실시간 처리에는 유용하지 않습니다.
Joshua

@Jushua : 운영 체제에 따라 메모리 초과 커밋이 기본값이 아니거나 가능하지 않을 수도 있습니다.
jlliagre

RAM이 8GB 인 NAS 서버가 있으며 최대 2 개의 VM을 실행합니다. 스왑을 넣지 않았습니다. 심하게 스왑을 시작하면 어쨌든 이미 죽었습니다. 그래서 그것은 당신의 주장을 완벽하게 지원합니다. 반면에, 여전히 녹슨 데스크탑을 사용하고 있으며 1GB의 RAM으로 제한되며 스파 스 메모리를 처리하기 위해 스왑이 있습니다. 조금 느리지 만 Firefox와 다른 응용 프로그램을 동시에 열 수 있도록 도와줍니다.
Huygens 2013

모든 캐시가 비워지고 시스템이 느려진 후에 만 ​​OOM 킬러 트리거가 너무 늦습니다. 시스템을 빠르게 유지하기 위해 earlyoom 또는 nohang 을 사용 하여 동일한 작업을 수행하지만 더 일찍 수행합니다! 스왑을 사용하거나 사용하지 않고 사용할 수 있습니다.
joeytwiddle

답변:


28

스왑 (디스크 영역)과 스왑 (메모리 페이지를 RAM에서 디스크로 이동하는 방법과 혼동하지 마십시오)을 혼동하지 마십시오.

과도한 스와핑은 성능상의 이유로 피해야하지만 스왑 영역이 반드시 문제가되는 것은 아닙니다.

Linux와 같이 메모리를 초과 커밋하는 프로세스, 즉 프로세스가 사용 가능한 것보다 많은 메모리를 할당 할 수 있도록하므로 상황을 처리하기에 스왑이 충분하지 않은 RAM이 부족하면 OOM 킬러가 트리거됩니다. 종료 할 "올바른"프로세스를 선택하는 데 사용 된 알고리즘을 신뢰하고 제대로 종료 할 수있는 기회를주지 않고 종료 될 하나 이상의 프로세스를 승인해야합니다. 다음은 왜 OOM 킬러가 좋은 아이디어가 아닌지 설명 하는 유명한 비유 입니다.

Solaris와 같이 메모리를 과다 커밋하지 않는 시스템, 즉 RAM에서든 디스크에서든 메모리 예약이 항상 가상 메모리에 의해 항상 백업되도록하려면 충분한 스왑 영역이 있어야합니다. 그렇지 않으면 RAM의 잠재적으로 중요한 부분이됩니다. 지나간.


1
Solaris에 대한 요점이 여전히 맞습니까? blogs.oracle.com/jimlaurent/entry/solaris_faq_myths_and_facts 상태 : 오늘날 가상 메모리는 총 실제 RAM과 디스크의 스왑 공간의 합계로 구성됩니다. Solaris는 스왑 공간을 전혀 구성 할 필요가 없습니다. 이 옵션을 선택하면 RAM이 가득 차면 새 프로세스를 시작할 수 없습니다. 나는 당신의 요점이 무엇인지 알 것입니다-만약 당신이 스왑없이 물리적 램보다 더 큰 것을 mmap하고 싶다면 당신은 할 수 없었습니까? (mmap이 게으른 이니셜 라이저인지 여부에 관계없이).
신시사이저

5
예, 솔라리스에 대한 나의 요지는 여전히 옳습니다. Jim Laurent의 인용이 사실이더라도, Solaris는 스왑을 요구하지 않습니다. 스왑이 없다는 것은 할당 된 메모리 중 일부가 사용되지 않더라도 모든 메모리 예약 (예 : malloc)을 RAM으로 백업해야 함을 의미합니다. tmpfs가 Solaris (및 Linux도 해당 문제)와 교환하려는 이유이기도하지만 이는 큰 mmap 또는 tmpfs와 관련이 없습니다.
jlliagre 2012

1
Linux 업데이트 : 초과 커밋을 해제하고 OOM 알고리즘을 수정할 수 있으며 cgroup을 사용하여 고유 한 OOM 핸들러를 가질 수도 있습니다.
peterph

1
@peterph Linux에서 오버 커밋을 해제하면 스왑이 덜 비 동기화됩니다. 초과 커밋하지 않으면 모든 예약을 백업 할 수있을 정도로 큰 스왑 영역이 있어야합니다.
jlliagre

1
포크로 예약 된 가상 메모리는이를 수행하는 프로그램의 크기에 따라 다릅니다. 2GB의 메모리 분기를 사용하는 Java VM이 있다고 가정하면 일시적으로 2GB가 더 필요합니다. 사용 가능한 2GB가 적거나 동시에 여러 번있을 때 이런 일이 발생하면 하나 이상의 포크가 실패합니다. 이는 오버 커밋이 아닌 OS 및 오버 커밋이 비활성화 된 경우 Linux에서도 일반적인 상황입니다. IMHO가 메모리 오버 커밋보다 훨씬 나은 솔루션 인 스왑 영역을 충분히 확보하여 쉽게 고칠 수 있습니다.
jlliagre

3

나는 스왑을 유지 해야하는 한 가지 이유를 알고 있습니다. 시스템에 구성 할 수있는만큼의 메모리를 차지하는 앱이 있습니다. 처리의 한 부분에서 포크와 exec를 수행하여 단일 유닉스 명령을 실행합니다 ( "uname"또는 "user"또는 Java와 동등한 것을 찾을 수없는 것으로 생각합니다). java는 원시 응용 프로그램처럼 쓰기 시맨틱에 복사를 사용하여 vfork를 수행하지 않는 것으로 보입니다. 4Gb의 RAM을 사용하여 앱을 시작하면 포크는 다른 4Gb의 RAM을 사용하지만 신속하게 해제합니다. 해당 하둡으로 교체 할 4Gb 스왑이 없다면 내 앱에 4Gb를 지불하기 위해 8Gb의 RAM 비용을 지불해야합니다.


이것은 요점이지만 현대적인 fork ()를 반영하지는 않습니다. Linux 및 FreeBSD (및 OSX?)에서 fork ()는 COW (Copy-On-Write) 페이지를 사용하여 구현됩니다. COW (Copy-On-Write)는 데이터 복사를 지연 또는 방지하는 기술입니다. 프로세스 주소 공간을 복제하지 않고 부모와 자식이 단일 복사본을 공유 할 수 있습니다. 그러나 데이터는 기록 될 때 복제되고 각 프로세스가 고유 한 사본을 수신하는 방식으로 표시됩니다. 인용 : forums.freebsd.org/showthread.php?t=26355 및 fork ()에 대한 Linux 맨 페이지
Synthesispatel

사실이지만 COW로 표시 할 수없는 일부 페이지가 있습니다. 예를 들어, 페이지는 새로운 자식 프로세스의 커널 스택 및 내부 데이터 구조합니다 (사용 페이지 사용 files_structstruct signalstask_struct, 등). 또한 많은 실행 가능 페이지는 PIC (위치 종속 코드)가 아니므로 동적 로더 ( ld-linux.so)에 의해 수정 된 실행 가능 코드 페이지에는 스왑 공간이 즉시 스왑되도록 작성되지 않았더라도 스왑 공간이 예약되어 있어야합니다. 이것이 제가 리눅스를 좋아하는 이유입니다. 스왑을 해제해도 시스템이 계속 실행됩니다. :)
Azhrei 2016 년

3

기술적으로 토론에 추가 할 수는 없지만 몇 가지 예를들 수 있습니다. 예전 노트북 (2GB RAM kunbuntu lucid)은 일반적으로 0에서 스왑으로 실행됩니다. 총 100 개의 연결을 사용할 수있는 토렌트가 많은 전송 (비트 토렌트 클라이언트)을 실행하면 스왑이 진행될 수 있습니다. 1GB 실제 메모리를 사용하는 XP vm을 실행하면 더욱 악화됩니다.

다른 사람들은 그래픽 렌더링과 같은 메모리 집약적 프로세스도 스왑으로 떨어질 수 있다고 언급했습니다. 가끔 만 그렇게해도 문제가되지 않습니다.

OOM 문제에 관한 한, 스왑은 문제를 식별하는 것과 남쪽으로가는 것 사이의 시간을 사기 때문에 실제로 생명의 은인이 될 수 있습니다. 많은 것들이 거의 모든 메모리를 사용하므로주의를 기울이지 않지만 스왑이 시작되면 그 사실을 발견하고 문제를 찾기 시작합니다.


예, 레거시 시스템은 스왑을 활성화하지 않으면 많은 것을 할 수 없습니다. 나는 여전히 256MB의 RAM을 가진 오래된 서브 노트북을 가지고 있는데 스왑은 거의 모든 프로그램을 시작해야한다. 나는 그 질문이 현대 시스템을 목표로한다고 생각합니다.
Dmitry Grigoryev

3

스왑 공간에 대한 매우 유용한 응용 프로그램이 하나 있습니다. RAM을 사용하는 저장 장치에 스왑 공간을 배치하여 설치 가능한 시스템 RAM의 한계를 극복하여 RAM 확장

http://techreport.com/articles.x/16255를 살펴보십시오. 기본적으로 S-ATA에서 DDR2-RAM으로의 인터페이스입니다. 여기에는 최대 64GB의 RAM을 넣을 수 있습니다. 그중 하나에 스왑 공간을두면 상당한 추가 RAM이 생깁니다. 물론 일반 시스템 RAM만큼 빠르지는 않습니다. 그러나 시스템 RAM을 일종의 추가 캐시 계층으로 바꿉니다.


1
64GB의 RAM을 지원 하는 메인 보드에 100 달러를 투자하는 것이 가격 (549 달러)을 고려하는 것이 더 효율적이지 않을까요?
Dmitry Grigoryev

1
@DmitryGrigoryev : 물론입니다. 그러나 때로는 특정 종류의 하드웨어 ( 기침 의료 시스템 인증 기침 때문에)를 사용해야 하지만 아주 짧은 시간에 생산 된 엄청나게 큰 데이터 세트 (단층 촬영 스캐너, 데이터 전송률> 3GiB / s)도 처리해야합니다.
datenwolf

이 경우에도 RAM 드라이브를 의료 기기로 인증하지 않아도됩니까? ;) 그러나 그래, 나는 요점을 얻었다.
Dmitry Grigoryev

1
@DmitryGrigoryev : 실제로해야합니다. 그러나 이러한 S-ATA RAM 디스크 장치를 인증하는 것이 전체 메인 보드를 인증하는 것보다 훨씬 쉽습니다. 의료 장비에 사용되는 컴퓨터를 소싱 할 때는 일반적으로 인증 된 기성품을 가능한 한 많이 구입합니다. 인증이없는 부품이 존재하는 경우 필요한 테스트와 인증을 직접 수행하십시오. 특히 환자 안전에 중점을두고 치료 계획에 데이터가 사용되지 않는 연구에서 작업 할 때 가장 비용 효율적이고 빠른 솔루션입니다. BT; DT.
datenwolf

3

4Gb 이상의 노트북 / 데스크톱에서 스왑 ( Windows 파일 이름의 페이징 파일)없이 Linux 및 Windows 를 실행했습니다 . 메모리 소진이 발생하는 경우가 있습니다. 시스템이 이보다 더 빠르다고 생각합니다. 내 작업에 특별한 요구 사항은 없습니다.

내가 배운 것들 :

  • Windows는 시간이 지남에 따라 메모리를 "손실"합니다. 약 20-30 일의 가동 시간으로 재부팅을 원하는 시점에 도달합니다. 왜 이런 일이 발생하는지 모르겠습니다. 일부 드라이버에서 누수되거나 안티 바이러스 일 수 있습니다. 페이징 파일이 있으면이 누수 된 메모리를 페이징 파일에 넣을 수 있다고 생각하므로 일반 Windows 시스템 에서이 문제를 확인하기가 더 어렵습니다.
  • Firefox는 Chrome보다 적은 메모리로 더 잘 처리합니다. Firefox가 경고하고 Chrome이 계속 작동합니다.

2

귀하의 주장은 성능이 중요한 서버에 매우 유효하며 다음에 어떤 앱이 다음에 작동하는지 아는 것은 예측할 수 없습니다.

A의 바탕 화면 그러나, 나는 스왑 내가 밀어 작업을 진열하고 경우에 유용을 찾을 수 있습니다.

예를 들어, 앱을 사용하여 작업을하고 있는데 어떤 작업 (하위 작업 또는 중단)에 A앱을 사용해야한다는 것을 알게 B되면 작업 A하는 동안 디스크 로 쉽게 전환 할 수 있습니다. 에 B이상은 닫습니다 A후 나중에 다시 시작해야합니다.

이것은 A다시 시작할 때 복원되지 않은 저장되지 않은 상태를 유지하는 경우에 특히 그렇습니다 .

A스왑 으로 푸시 / 풀 에서 빠르거나 빠르 거나 다시 시작 하는 것이 더 빠른지 여부 는 앱에 따라 다릅니다. (일부는 스타트 업이 느리지 만 주거 규모는 작습니다.)

그러나 생산성 향상을위한 더 나은 솔루션은 추가 RAM을 설치하는 것입니다.


업데이트 :이 답변을 작성한 후 많은 RAM과 느린 하드 드라이브가있는 랩톱을 소유했습니다. 이 경우 내 충고가 바뀌었다! 다음은 장단점을 요약것입니다 .
joeytwiddle

1

내 시스템에서 / tmp가 너무 많은 RAM을 사용하면 스왑을 위해 유출됩니다.

이것은 / tmp에 실제 파일 시스템을 사용하는 것보다 훨씬 빠릅니다.


매우 위험합니다. 램프가 필요한 경우 크기를 명시 적으로 설정하기 위해 fstab (또는 옵션)에서 지정합니다. 프로그램이 / tmp에 파일을 생성하기 시작하므로 메모리 할당에 이상이 없을 수 있습니다. 스왑 ramfs 파일 (당신이 속도를 ramfs에 의존하고 특히) 표시하기 위해 나쁜 장소가 될 것입니다
synthesizerpatel

2
거기에서 자주 RAM 크기를 초과합니다. 스왑에 의해 지원되는 tmpfs는 유출시에도 ext2보다 훨씬 빠릅니다.
Joshua

알아두면 도움이 될 것이며 앞으로 살펴볼 연구 항목이 될 것입니다. / tmp에있는 tmpfs / ramfs의 프록시로 램을 채우는 응용 프로그램에 대해서는 여전히 우려하고 있습니다. 그것은 나에게 heebie jeebies를 준다!
신시사이저

그런 다음 한계 = 스왑 크기를 설정하십시오.
Joshua

또한 이것은 ramfs와 tmpfs의 차이점입니다. tmpfs는 스왑으로 유출 될 수 있지만 ramfs는 스왑 할 수 없습니다.
Joshua

1

스왑이 사용되는 데는 여러 가지 이유가 있습니다.

일반적으로 시스템에 실제 메모리가 충분하지 않은 경우 커널은 일부 응용 프로그램 (사실-응용 프로그램을 실행하지 않는 데 사용되는 메모리의 일부)을 교체 할 수 있습니다.

나중에 이러한 응용 프로그램이 무언가를 수행해야 할 때 (예를 들어, 일부 데이터가 소켓에 도착하거나 일부 타이머가 실행되는 경우) 커널은 다른 응용 프로그램을 교체합니다.

스왑 사용의 다른 예는 디스크 일시 중단입니다.

임베디드 장치와 관련하여 모든 장치는 (적어도) 두 개의 큰 그룹으로 나눌 수 있습니다.

  1. Linux / Windows 또는 유사한 비 RTOS (실시간 OS)를 실행합니다. 또는
  2. 그들은 RTOS를 실행합니다.

물론 일부 코드 (일부 마이크로 컨트롤러 등)를 실행하는 장치가 있습니다. 그러한 장치에는 OS가 없기 때문에 설명하지 않을 것이므로 스왑에 대해 논의하는 것은 의미가 없습니다.

임베디드 OS의 첫 번째 그룹 (일부 OS 실행)은 스왑을 사용할 수 있습니다 (보통 사용합니다). 일반적으로 이러한 장치는 데스크톱 및 서버와 같은 방식으로 스왑을 사용합니다.

RTOS에는 이벤트 응답 시간이 제한되어 있으므로 RTOS를 실행하는 두 번째 장치 그룹은 스왑을 전혀 사용하지 않습니다.

  • 스왑에서 읽는 데는 예상치 못한 시간이 걸릴 수 있습니다
  • 장치에는 사전 정의 된 (컴파일 타임에) 많은 수의 작업이 있습니다.

BTW, 리눅스가 스왑을 사용하는 방법에 대한 설명이 많이있다, 그 중 하나는 http://distilledb.com/blog/archives/date/2009/02/22/swap-files-in-linux.page
윈도우 사용 비슷한 접근법.


또한 TuxOnIce와 같은 것을 사용하지 않는 한 최대 절전 모드 (디스크 일시 중단)에 스왑이 필요합니다.
Renan 2019

1

최대 절전 모드와 하이브리드 절전 모드 모두 Linux에서 스왑 공간이 필요한 것 같습니다 .

하이브리드 절전을 사용해야 할 때까지 Linux에서 스왑 공간 / 파티션을 사용한 적이 없습니다. 시스템에서 중요 배터리 수준의 절전 모드를 사용할 수 없었기 때문에 종료, 최대 절전 모드 및 하이브리드 중 하나만 선택하는 Upower에서 처리 했으므로 -자다. (더 여기 )


0

내가 본 몇 가지 좋은 용도는 많은 메모리를 사용하지만 성능이 중요하지 않은 프로세스입니다. 한 가지 사례는 메모리 누수가 나쁜 고대 Firefox입니다. RAM을 채우고 넘치지 않고 스왑 효과를 얻습니다. 우리가 가진 또 다른 하나는 재귀 DNS 서버였습니다 ( 거의 거의 사용되지 않는 거대한 캐시를 빠르게 구축합니다 ).

스왑에 대해 내가 본 다른 설명은 다음과 같이 다소 차이가있다. "항상 SWAP = 2 * RAM을 구성하라는 메시지가 표시된다. 이것은 완전히 말도 안되며, RAM과 스왑 사이에는 아무런 관계가 없다. 스왑은 메모리 사용량의 급증을 수용한다 로드가 RAM에 들어가도록 대부분의 메모리를 추가해야합니다.로드가 안정적이면 스왑이 필요하지 않습니다. 부하가 매우 가변적이라면 부하에 대한 스왑이 충분해야 스파이크에 대해 충분한 스왑이 필요합니다. 스왑은 거의 전체적으로 성능에 큰 영향을 미치지 않도록 충분히 사용되지 않습니다.로드 스파이크가 무엇인지 모르고 디스크가 RAM보다 훨씬 저렴하므로 SWAP = 2 * RAM을 구성하십시오. "

이전 버전의 Solaris에서는 RAM만큼 스왑이 없으면 스왑을 전혀 사용할 수 없었습니다. 값. 그러나 그것은 우리의 대형 머신에 64 MiB RAM과 1 GiB 디스크가 있었을 때였 습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.