웹사이트 검색

VPS에서 가상 메모리(스왑 파일)를 구성하는 방법


목차 및 서문

  1. 소개 - 요구 사항 및 이유
  2. 장단점 - 물방울
  3. VPS에서 활성화되었는지 확인
  4. 파티션 교체, 파일 및 디스크 이미지 교체
  5. 스왑 파일 만들기
  6. 스왑 활성화 및 비활성화
  7. 구성, 우선 순위 및 sysctl 설정
  8. 결론

머리말

이 문서에서는 가상 메모리 또는 스왑 파일(페이징) 사용의 장단점, 드롭릿이 이미 가상 메모리 또는 페이징을 사용하는지 확인, 스왑 파티션과 스왑 파일의 차이점, 스왑 파일을 만드는 방법에 대한 정보를 다룹니다. , 시스템 "swappiness"를 구성하는 방법(가상 메모리를 사용할 가능성과 사용할 적절한 크기를 결정하는 정도).

Wikipedia에서 가상 메모리에 대한 자세한 내용을 읽을 수 있습니다. 이 기사의 범위를 벗어난 많은 질문에 답할 것입니다.

Wikipedia의 Paging(스왑 파일) 기사에서 인용: (명확한 설명을 위해 두 번째 단락 강조)

"컴퓨터 운영 체제에서 페이징은 컴퓨터가 주 메모리에서 사용하기 위해 보조 저장소에서 데이터를 저장하고 검색할 수 있는 메모리 관리 체계 중 하나입니다. 페이징 메모리 관리 체계에서 운영 체제는 보조 저장소에서 데이터를 검색합니다. 페이지라고 하는 동일한 크기의 블록에 있습니다. 메모리 분할에 비해 페이징의 주요 이점은 프로세스의 물리적 주소 공간이 비연속적일 수 있다는 것입니다. 페이징이 사용되기 전에 시스템은 전체 프로그램을 스토리지에 연속적으로 맞춰야 했습니다. 다양한 저장 및 조각화 문제가 발생했습니다."

"페이징은 대부분의 최신 범용 운영 체제에서 가상 메모리 구현의 중요한 부분으로, 물리적 RAM(Random-Access Memory)에 맞지 않는 데이터에 대해 디스크 스토리지를 사용할 수 있도록 합니다."

스왑은 일반적으로 기존의 회전하는 하드 드라이브를 사용하는 시스템에 권장되지만 SSD와 함께 스왑을 사용하면 시간이 지남에 따라 하드웨어 성능이 저하되는 문제가 발생할 수 있습니다. 이러한 고려 사항으로 인해 DigitalOcean 또는 SSD 스토리지를 활용하는 다른 공급자에서 스왑을 활성화하지 않는 것이 좋습니다. 그렇게 하면 귀하와 귀하의 이웃에 대한 기본 하드웨어의 안정성에 영향을 미칠 수 있습니다.

서버의 성능을 개선해야 하는 경우 Droplet을 업그레이드하는 것이 좋습니다. 이렇게 하면 일반적으로 더 나은 결과를 얻을 수 있으며 서비스에 영향을 줄 수 있는 하드웨어 문제에 기여할 가능성이 줄어듭니다.

<이름=\1\>

소개 - 요구 사항 및 이유

그것은 무엇이며 왜 사용합니까?

512mb 드롭릿이 있든 8GB 드롭릿이 있든 상관 없습니다. 아치, 페도라, CentOS, 데비안 또는 우분투; 응용 프로그램 또는 서버/데몬은 물리적으로 가지고 있는 것보다 더 많은 메모리(때로는 더 많은 메모리 할당)가 필요할 수 있습니다. 보다 구체적으로 우리의 경우 작업을 완료하기 위해 가상 서버에 할당된 것입니다.

프로덕션 서버를 다루는 경우 가상 메모리가 활성화되지 않고 시스템에 사용 가능한 메모리가 더 이상 없는 경우 프로그램이나 서비스(아마도 웹 서버)가 더 많은 메모리를 할당해야 하는 경우 실패하다! 플랫폼 및 구성에 따라 이로 인해 다른 응용 프로그램(예: 메모리를 요청하는 프로세스가 아닌 다른 프로세스)을 포함하여 많은 바람직하지 않거나 불안정한 조건이 필요한 메모리를 해제하기 위해 강제로 닫혀 프로그램이 실패하고 충돌하거나 전체가 발생할 수 있습니다. 서버 - 전적으로.

이 때문에 저는 개인적으로 거의 모든 시스템(드롭릿, 전용 서버, Windows PC 또는 Mac, 심지어 Android 태블릿 또는 휴대폰)의 모든 사용자에게 최소한 소량의 가상 메모리를 활성화할 것을 권장합니다.

작동 방식

가상 메모리를 사용하면 시스템(및 앱)에 시스템이 물리적으로 가지고 있는 것 이상으로 추가 가상 RAM을 사용할 수 있습니다. 드롭릿의 경우에는 할당된 것입니다. 추가 가상 메모리에 디스크를 사용하고 필요에 따라 시스템 메모리와 가상 메모리 안팎으로 데이터를 교환함으로써 이를 수행합니다.

디스크에서 읽기/쓰기(심지어 DigitalOceans의 번개처럼 빠른 SSD)는 실제 시스템 RAM에서 읽기/쓰기보다 적어도 몇 배는 느립니다. 가상 메모리는 여유 공간을 제공하고 더 많은 응용 프로그램/서버를 하나의 드롭릿에서 실행하고 메모리 부족 오류를 방지하지만 실제로 더 많은 메모리가 필요한 경우/가상 서버를 업그레이드하기 위한 대체 솔루션이 아닙니다.

이 기사의 내용은 노련한 관리자에게는 사소해 보일 수 있지만 DigitalOceans 호스팅 서비스를 사용하는 모든 사람, 특히 DigitalOcean, 일반적으로 VPS 시스템을 처음 사용하는 사람 또는 자신의 서버를 관리하는 사람에게는 유용한 정보라고 생각합니다.

요구 사항

요구 사항은 매우 간단하며 이 기술은 모든 배포 및 드롭릿 유형에서 작동해야 합니다. 실제로 Android 휴대폰이나 태블릿에서도 작동합니다(루트 및 busybox가 설치되어 있는 경우).

  • 전원이 켜진 드롭릿 또는 가상 서버(또는 전용 서버, Linux 기반 시스템 등)
  • 루트 터미널 액세스(ssh, vnc, local)
  • free, swapon, swapoff, dd, mkswap 명령은 사용할 수 있으며 이 모든 것은 드롭릿과 함께 사용하는 모든 플랫폼에서 사용할 수 있어야 합니다.

대부분의 플랫폼은 자동으로 가상 메모리를 사용하고 관리하며 설치 중에 시스템 파티션에 자동으로 특수 스왑 파티션이나 파일을 생성합니다. 512mb RAM에 대한 1024mb 스왑.

이것은 DigialOceans 물방울을 포함한 가상 서버의 경우 항상 그런 것은 아닙니다.

<이름=\2\>

장단점 - 물방울

DigitalOceans 드롭릿은 일반 하드 드라이브보다 몇 배 더 빠르고 검색 시간이 짧고(하드 드라이브 헤드가 물리적으로 디스크를 가로질러 데이터를 읽어야 함) 초당 낮은 IO 요청이 없는 SSD(솔리드 스테이트 디스크)를 사용합니다. . SSD는 여러 영역에서 동시에 읽을 수 있지만 하드 드라이브는 일반적으로 한 번에 한 영역에서만 읽을 수 있습니다.

특히 웹, 메일, db 서버의 경우 가상 메모리에 크게 의존하는 것은 결코 좋은 생각이 아니지만 DO SSD는 가상 메모리를 덜 고통스럽고 논리적으로 사용하는 데 도움이 됩니다.

장점

  • OOM(메모리 부족) 오류, 충돌, 메모리 관련 시스템 예측 불가/불안정성으로부터 보호
  • 시스템에 사용 가능한 메모리를 늘리고 더 많은 프로그램을 동시에 더 안전하게 실행할 수 있습니다.
  • DigtalOceans SSD 스토리지는 페이징 응답 시간을 늘리는 동시에 VM 관련 지연 및 스래싱을 줄입니다.

단점

  • 쓰레싱 가능성: 시스템이 바쁘고 물리적으로 사용 가능한 것보다 평균적으로 더 많은 메모리를 적극적으로 사용하는 경우 VM 시스템은 필요에 따라 프로그램 데이터를 디스크와 RAM 안팎으로 지속적으로 교환해야 합니다. 우리 모두는 하드 드라이브가 끝없이 갈리는 것처럼 보이는 약간 과부하된 Windows PC에서 이 결과를 보았을 것입니다. 참을 수 없을 정도로 느리고 재미가 없습니다. 그러나 올바른 구성으로 피할 수 있으며 이것은 DigitalOceans SSD의 속도로 인해 여기서도 나쁘지 않은 단점 중 하나입니다.
  • 일반적으로 시스템 메모리에 따라 디스크 공간을 사용합니다. 드롭릿에 512mb가 있는 경우 스왑에 512mb-1.5gb를 사용하는 것이 좋습니다. 그러나 이것은 드롭릿 디스크에서 사용할 수 있는 공간이 512mb-1.5gb 적습니다.
  • 일반적으로 스왑 전용 디스크 파티션을 사용하는 것이 좋습니다. 그러나 이것은 물방울에서는 불가능하며 대신 스왑 파일/디스크 이미지를 사용해야 합니다.

<이름=\3\>

VPS에서 활성화되어 있는지 확인

구성이 이미 가상 메모리를 사용하고 있을 수 있습니다. 아래 명령은 활성화 여부를 결정하는 방법과 활성화된 경우 크기 및 구성을 보여줍니다.

서버에 대한 터미널 또는 SSH/VNC를 엽니다. 이 명령은 모두 터미널 또는 셸에서 수행됩니다.

잊지 마세요. 변경하려면 루트 권한이 필요합니다. whoami 명령으로 로그인한 사용자를 확인할 수 있습니다. 루트 또는 0으로 응답하지 않으면 su를 입력하여 루트 쉘을 시작할 수 있습니다.

터미널의 프롬프트에서 "free" 명령을 입력하여 드롭릿에 이미 가상 메모리가 활성화되어 있는지 확인할 수 있습니다.

bash-root@my.droplet:/# free

"free" 명령은 시스템에서 사용 가능한 물리적 및 가상 메모리를 보여줍니다.

이미 가상 메모리를 활성화한 경우 "파티션 교체에 대한 참고 사항"으로 건너뛴 다음 구성 섹션으로 건너뛸 수 있습니다. 활성화되면 출력은 다음과 같습니다.

bash-root@my.droplet:/# free
             total       used       free     shared    buffers     cached
Mem:        361996     360392       1604          0       1988      54376
-/+ buffers/cache:     304028      57968
Swap:       249896          0     249896
bash-root@my.droplet:/# _

활성화되지 않은 경우 출력은 다음과 같습니다.

bash-root@my.droplet:/# free
             total       used       free     shared    buffers     cached
Mem:        361996     360392       1604          0       2320      54444
-/+ buffers/cache:     303628      58368
Swap:            0          0          0
bash-root@my.droplet:/# _
<p>You can also narrow down the output with <code>free | grep Swap</code>. This will only show the <b>Swap:</b> line, total, used and free VM. (Remember, by default, grep is case sensitive!)</p>
bash-root@my.droplet:/# free | grep Swap
Swap:       249896          0     249896
bash-root@my.droplet:/# _

<이름=\4\>

스왑 파티션, 스왑 파일 및 디스크 이미지

스왑 파티션에 대한 참고 사항

일반적으로 Linux 기반 시스템의 경우 하드 디스크에 전용 스왑 파티션을 두는 것이 좋습니다. 대부분의 시스템은 일반 설치 중에 자동으로 이 작업을 수행하며 스왑이 이미 구성되어 있는 경우 파티션으로 설정되었을 가능성이 매우 높습니다. 안타깝게도 아래의 sysctl 설정을 구성하는 것 외에 스왑 파티션 크기 조정은 이 문서의 범위를 벗어납니다.

그러나 여기에 제시된 방법을 계속 사용하여 스왑 파일을 추가하고 분할된 스왑 영역 이상으로 사용 가능한 가상 메모리를 늘릴 수 있습니다. 그러나 스왑이 시스템에서 이미 구성되고 관리되는 경우 추가 가상 메모리가 필요하지 않을 수 있으며 수행 중인 작업을 모르는 경우 기본 설정을 그대로 두는 것이 좋습니다.

스왑 파일이란 무엇입니까?

전용 파티션을 사용하는 대신 일부 시스템(특히 Windows)은 가상 메모리를 특수 파일에 저장합니다. 이는 파티셔닝이 불가능하거나 가능하지 않은 경우에도 사용할 수 있는 옵션입니다. Linux에서 이 파일은 실제로 디스크 이미지입니다.

디스크 이미지란 무엇입니까?

디스크 이미지에는 일반적으로 파일 및 해당 파일에 대한 정보와 이를 포함하는 파일 시스템이 포함됩니다.

예를 들어 드롭릿 스냅샷(저는 눈송이라고 부르는 것을 좋아합니다 - 고정된 드롭릿), 백업, 복제, 마이그레이션 등을 위해 전체 드롭릿의 디스크 이미지를 생성하는 기능이 있습니다.

또 다른 대표적인 예는 대부분의 Linux 배포판(또는 배포판)이 일반적으로 .iso 형식의 디스크 이미지로 제공되어 이를 마운트하거나 디스크에 구울 수 있다는 것입니다.

이미지를 어떤 방식으로 사용하든지 기억해야 할 중요한 점은 이미지가 파일 시스템 정보를 저장하므로 이미지가 생성된 파일 시스템처럼 사용할 수 있거나 완전히 다시 만들 수 있다는 것입니다.

<이름=\5\>

스왑 파일 생성

드롭릿의 경우 스토리지를 분할할 수 없으므로 디스크 이미지를 사용해야 합니다. *NIX 운영 체제는 스왑을 위해 전용 파일 시스템을 사용합니다. 위에서 말했듯이 파티션 사용이 선호되는 이유입니다. 우리가 할 수 있는 일은 필요한 가상 메모리 크기에 따라 빈 디스크 이미지를 만들고 스왑 파일 시스템으로 초기화한 다음 켜는 것입니다.

먼저 이 파일을 저장할 위치를 결정해야 합니다. 예를 들어 스왑에 사용하는 MB의 양에 관계없이 파티션에 충분한 여유 공간이 있어야 합니다. 512mb의 스왑은 ~512mb 스왑 파일을 생성합니다.

df -h 명령을 사용하여 마운트된 파티션과 파일 시스템, 크기 및 여유 공간을 볼 수 있습니다.

이 파일을 /var에 넣고 이름을 "swap.img"로 지정하는 것이 좋습니다. /var로 cd하고 이 파일을 만든 다음 권한을 600으로 설정합니다.

참고: 다른 사용자가 파일을 직접 읽을 수 없도록 파일 권한을 600으로 설정하는 것이 보안상 중요합니다. 그렇지 않으면 시스템 메모리가 읽히거나 악화될 수 있습니다.

bash-root@my.droplet:/# cd /var
bash-root@my.droplet:/var# touch swap.img
bash-root@my.droplet:/var# chmod 600 swap.img
bash-root@my.droplet:/var# _

사이징

이제 파일 크기를 조정합니다. 크기 조정은 중요하며 최적의 크기는 시스템 및 사용 사례에 따라 달라집니다.

일반적으로 사용 가능한 시스템 RAM의 1-2배를 권장합니다. 따라서 512mb 드롭릿이 있는 경우 512mb-1gb 스왑을 사용하십시오. 1GB 드롭릿이 있는 경우 1GB-2GB 스왑 등을 사용하십시오.

전적으로 사용자의 용도에 따라 다르지만 이 지침은 512mb 방울에 맞춰져 있습니다. dd 명령을 사용하여 스왑 파일을 0 또는 무로 채워 필요한 크기로 늘릴 것입니다. 이 경우 1GB 또는 1024MB를 사용하고 있습니다. 1분 정도 소요될 수 있습니다.

bash-root@my.droplet:/var# dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 4.0868896 s, 253 MB/s
bash-root@my.droplet:/var# _

디스크 이미지 준비

여기서는 스왑 파일 시스템을 초기화합니다.

bash-root@my.droplet:/var# mkswap /var/swap.img
Setting up swapspace version 1, size = 1020 GiB
no label, UUID=72761533-8xbe-436l-b07e-c0sabe9cedf3
bash-root@my.droplet:/var# _

완료되면 사용할 준비가 되었습니다!

<이름=\6\>

스왑 활성화 및 비활성화

스왑 파일 활성화

swapon을 사용하여 활성화합니다. 성공시 출력은 없지만 무료로 확인하실 수 있습니다.

bash-root@my.droplet:/var# swapon /var/swap.img
bash-root@my.droplet:/var# free
             total       used       free     shared    buffers     cached
Mem:        503596     478928      24668          0      38832     102384
-/+ buffers/cache:     337712     165884
Swap:      1048572       1780    1046792
bash-root@my.droplet:/var# _

swapoff /var/swap.img를 사용하여 끌 수 있습니다.

부팅 중 스왑 파일 활성화

swapon은 현재 부팅에 대해서만 파일을 활성화합니다. 재부팅하면 부팅 시 실행되도록 swapon을 스크립팅하거나 /etc/fstab를 변경하지 않는 한 온라인 상태로 돌아오지 않습니다. 여기서 사용할 방법입니다.

부팅 시 준비되도록 /etc/fstab 파일에 한 줄을 추가하기만 하면 됩니다. 조심하세요! 이 파일은 올바르게 포맷되지 않았거나 덮어쓰면 시스템을 손상시킬 수 있습니다. swap.img를 /var에 넣으면 문제 없이 아래 명령을 복사/붙여넣기할 수 있습니다. (입력하는 경우 두 개의 > 기호가 있는지 확인하십시오. 하나를 사용하면 끝에 한 줄을 추가하는 대신 파일을 덮어씁니다.

bash-root@my.droplet:/var# echo "/var/swap.img    none    swap    sw    0    0" >> /etc/fstab
bash-root@my.droplet:/var# _

<이름=\7\>

구성, 우선 순위 및 sysctl 설정

구성

스왑 공간이 온라인 상태가 되면 구성해야 할 사항이 많지 않습니다. 핵심 세부 사항에 관심이 없다면 여기서 멈출 수도 있습니다. 일반적으로 활성화되면 대부분의 설정에서 잘 작동합니다.

우선순위

여러 장치 및 장치 유형에 걸쳐 있는 스왑 파일 또는 파티션을 사용하려는 경우(드롭릿과는 달리), 더 느리거나 더 많은 유휴 스토리지를 사용하여 이러한 각 스왑 영역에 대한 우선 순위를 주문할 수 있습니다. 또는 바쁜 스토리지. 대부분의 경우 swapon 또는 /etc/fstab에 매개변수로 우선 순위를 지정할 수 있습니다.

시스템은 우선 순위가 낮은 스왑 영역을 사용하기 전에 우선 순위가 높은 스왑 영역을 사용합니다. swaon -p 예:

bash-root@my.droplet:/var# swapon -p 100 /var/swap.img
bash-root@my.droplet:/var# swapon -p 10 /mnt/SecondDrive/swap.img

그리고 /etc/fstab의 경우 다음과 같이 pri= 매개변수를 사용하여 우선순위를 설정할 수 있습니다.

/var/swap.img none swap defaults,pri=100 0 0
/mnt/SecondDrive/swap.img none swap defaults,pri=10 0 0

sysctl 설정(및 sysfs)

sysctl 명령을 사용하여 Linux 가상 메모리 관리자 전용 설정을 변경합니다.

변경을 권장하는 설정은 vm.swappiness뿐입니다. 이 설정은 Linux 커널/VM 처리기에 VM을 사용할 가능성을 알려줍니다. 0과 100 사이의 백분율 값입니다.

이 값을 0으로 설정하면 VM 처리기가 사용 가능한 스왑 공간을 가장 적게 사용하므로 사용 가능한 모든 시스템 메모리를 먼저 사용해야 합니다. 100으로 설정하면 VM 핸들러가 사용 가능한 스왑 공간을 사용할 가능성이 가장 높으며 사용 가능한 시스템 메모리의 더 많은 부분을 남겨 두려고 합니다.

저는 개인적으로 30%의 값을 사용하는 것을 권장합니다. 이것은 스와핑과 시스템 메모리 사이의 행복한 매개체가 되어야 합니다. 이 값은 엄격한 규칙보다 대상 목표에 더 가깝다는 점에 유의하십시오.

다음은 sysctl 설정을 수정하는 방법에 대한 예입니다. 자세한 내용은 sysctl --help 또는 man sysctl을 입력하면 됩니다.

bash-root@my.droplet:/var# sysctl -w vm.swappiness=30
vm.swappiness = 30
bash-root@my.droplet:/var# _

sysctl -a를 실행하여 VM뿐만 아니라 모든 sysctl 옵션을 나열하거나 sysctl -a | grep vm..

또는 단일 설정을 보려면(각 설정에 대한 grep 명령 다음에 키 이름을 변경할 수 있음):

bash-root@my.droplet:/var# sysctl -a | grep vm.swappiness
vm.swappiness = 30
bash-root@my.droplet:/var# _

Linux VM(vm.*)에 대한 다른 많은 설정이 있지만 이 문서의 일반적인 범위를 벗어나므로 일반적으로 해당 설정을 변경하지 않는 것이 좋습니다. 그러나 이 기사의 끝 부분(부록)에 조정하거나 학습할 가치가 있는 작은 옵션 목록을 포함했으며 이러한 옵션에 대한 권장 값(괄호 안에)을 추가했습니다.

모든 커널이 모든 옵션을 구현하는 것은 아니지만 Linux 커널 웹 사이트에는 전체 옵션 목록과 용도가 있습니다. 이 문서를 작성하는 시점에서 이 문서는 이미 약간 구식이지만 전혀 쓸모가 없거나 더 이상 사용되지 않습니다. 링크는 https://www.kernel.org/doc/Documentation/sysctl/vm.txt입니다.

해당 문서의 일부 설명에서는 설정을 파일로 언급하며 이는 Linux의 SysFS(Wikipedia) 시스템을 통해 액세스/구성할 수도 있기 때문입니다.

<이름=\8\>

결론

제 글을 읽어주셔서 감사합니다. 이제 프로덕션 환경의 안정성과 드롭릿 또는 가상 머신 컨텍스트 내에서 페이징/스왑 파일의 중요성을 이해해야 합니다.

댓글, 수정 사항, 쿠키는 환영합니다! 노..노..노..

참조 및 부록

사용된 참조, 링크:

다음은 일부 설정에 대해 내가 제안한 값뿐만 아니라 조정하거나 학습할 가치가 있는 sysctl/sysfs vm 관련 옵션 목록입니다. 이러한 설명은 의도적으로 짧습니다. 자세한 내용은 kernel.org 참조 링크를 참조하십시오.

dirty_background_bytes**
	
	Contains the amount of dirty memory at which the background kernel flusher threads
	will start writeback.
		
	Note: dirty_background_bytes is the counterpart of dirty_background_ratio. Only
	one of them may be specified at a time. When one sysctl is written it is
	immediately taken into account to evaluate the dirty memory limits and the
	other appears as 0 when read.

dirty_background_ratio**
	
	Contains, as a percentage of total system memory, the number of pages at which
	the background kernel flusher threads will start writing out dirty data.
	
	Note: dirty_background_ratio is the counterpart of dirty_background_bytes. Only
	one of them may be specified at a time. See above.

dirty_bytes**
	
	Contains the amount of dirty memory at which a process generating disk writes
	will itself start writeback.
	
	Note: dirty_bytes is the counterpart of dirty_ratio. Only one of them may be
	specified at a time. When one sysctl is written it is immediately taken into
	account to evaluate the dirty memory limits and the other appears as 0 when
	read.

dirty_expire_centisecs**

	This tunable is used to define when dirty data is old enough to be eligible
	for writeout by the kernel flusher threads.  It is expressed in 100'ths
	of a second.  Data which has been dirty in-memory for longer than this
	interval will be written out next time a flusher thread wakes up.

dirty_ratio**

	Contains, as a percentage of total system memory, the number of pages at which
	a process which is generating disk writes will itself start writing out dirty
	data.
	
	Note: dirty_bytes is the counterpart of dirty_ratio. Only one of them may be
	specified at a time. See above.

dirty_writeback_centisecs**

	The kernel flusher threads will periodically wake up and write `old' data
	out to disk.  This tunable expresses the interval between those wakeups, in
	100'ths of a second.
	
	Setting this to zero disables periodic writeback altogether.

drop_caches**

	Writing to this will cause the kernel to drop clean caches, dentries and
	inodes from memory, causing that memory to become free.

laptop_mode** (0 or Off for servers)

	laptop_mode is a knob that controls "laptop mode". All the things that are
	controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt.

memory_failure_recovery** (1 or On if supported)

	Enable memory failure recovery (when supported by the platform)
	
	1: Attempt recovery.
	
	0: Always panic on a memory failure.

min_free_kbytes** (2048kb to 4096kb)

	This is used to force the Linux VM to keep a minimum number
	of kilobytes free.  The VM uses this number to compute a
	watermark[WMARK_MIN] value for each lowmem zone in the system.
	Each lowmem zone gets a number of reserved free pages based
	proportionally on its size.
	
	Some minimal amount of memory is needed to satisfy PF_MEMALLOC
	allocations; if you set this to lower than 1024KB, your system will
	become subtly broken, and prone to deadlock under high loads.
	
	Setting this too high will OOM your machine instantly.

oom_dump_tasks**

	Enables a system-wide task dump (excluding kernel threads) to be
	produced when the kernel performs an OOM-killing and includes such
	information as pid, uid, tgid, vm size, rss, nr_ptes, swapents,
	oom_score_adj score, and name.  This is helpful to determine why the
	OOM killer was invoked, to identify the rogue task that caused it,
	and to determine why the OOM killer chose the task it did to kill.
	
oom_kill_allocating_task**

	This enables or disables killing the OOM-triggering task in
	out-of-memory situations.
	
overcommit_memory**

	This value contains a flag that enables memory overcommitment.

overcommit_ratio**

	When overcommit_memory is set to 2, the committed address
	space is not permitted to exceed swap plus this percentage
	of physical RAM.  See above.

page-cluster**

	page-cluster controls the number of pages up to which consecutive pages
	are read in from swap in a single attempt. This is the swap counterpart
	to page cache readahead.
	
panic_on_oom** (0 or Off/disabled)

	This enables or disables panic on out-of-memory feature.

swappiness** (30 to 50)

	This control is used to define how aggressive the kernel will swap
	memory pages.  Higher values will increase agressiveness, lower values
	decrease the amount of swap.

vfs_cache_pressure**

	Controls the tendency of the kernel to reclaim the memory which is used for
	caching of directory and inode objects.

저작권이 있거나 달리 보호될 수 있는 인용 부분은 공정 사용 자격으로 교육 목적으로 사용됩니다.