목차
스왑 파티션 소개
vmstat 3
swapon -s
운영 및 유지보수 리눅스 운영 및 유지 관리 Linux에서 스왑 파티션의 역할에 대한 자세한 설명

Linux에서 스왑 파티션의 역할에 대한 자세한 설명

Jan 24, 2018 pm 01:22 PM
linux swap 상해

이 기사는 Linux에서 스왑 파티션의 역할에 대한 자세한 해석을 주로 소개합니다. 편집자는 그것이 꽤 좋다고 생각하고 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

이 글은 리눅스에서의 스왑 파티션 관련 내용을 주로 연구합니다. 구체적인 소개는 다음과 같습니다.

스왑 파티션 소개

임베디드 리눅스 중국어 사이트 뉴스, 리눅스 시스템의 스왑 파티션, 즉 스왑 영역, 스왑 공간의 역할은 간단히 설명하면 다음과 같습니다. 시스템의 물리적 메모리가 부족할 때 , 현재 실행 중인 프로그램에서 사용할 수 있도록 공간의 일부가 해제되어야 합니다. 해제된 공간은 오랫동안 작동하지 않은 일부 프로그램에서 발생할 수 있으며, 해제된 공간은 Swap 공간에 일시적으로 저장되어 있으며 해당 프로그램이 실행될 때 저장된 데이터가 Swap에서 메모리로 복원됩니다. 이런 방식으로 시스템은 물리적 메모리가 부족할 때 항상 Swap을 수행합니다. 실제로 스왑 조정은 Linux 서버, 특히 웹 서버의 성능에 매우 중요합니다. 스왑을 조정하면 시스템 성능 병목 현상을 극복할 수 있고 시스템 업그레이드 비용을 절약할 수 있습니다.

모두가 알고 있듯이 현대 운영체제는 "가상 메모리" 기술을 구현했습니다. 이는 기능적인 면에서 물리적 메모리의 한계를 뛰어넘어 프로그램이 실제 물리적 메모리보다 더 큰 공간을 조작할 수 있게 해줄 뿐만 아니라, 더 중요하게는, " '가상메모리'란 각 프로세스가 다른 프로그램의 방해를 받지 않도록 각 프로세스를 격리해 주는 안전보호망입니다.

아마 컴퓨터 사용자라면 이런 현상을 자주 접하게 될 것입니다. 예를 들어, Windows 시스템을 사용하는 경우 여러 프로그램을 동시에 실행할 수 있습니다.오랜 시간 동안 주의를 기울이지 않은 프로그램으로 전환하면 하드 디스크 경고음이 들립니다. 자주 실행되는 프로그램에 의해 이 프로그램의 메모리가 '훔쳐' 스왑 영역에 배치되었기 때문입니다. 따라서 이 프로그램이 프런트 엔드에 배치되면 스왑 영역에서 데이터를 검색하여 메모리에 넣은 다음 계속 실행됩니다.

또한, 물리적 메모리에서 스왑 아웃된 모든 데이터가 스왑에 들어가는 것은 아니며(그렇다면 스왑이 압도될 것입니다), 데이터의 상당 부분이 파일 시스템으로 직접 스왑됩니다. 예를 들어, 일부 프로그램은 일부 파일을 열고 파일을 읽고 씁니다(사실 모든 프로그램은 실행 중인 프로그램 자체인 최소한 하나의 파일을 열어야 합니다). 필요 없음 파일 부분의 데이터는 Swap 공간에 배치되지만 파일에 직접 배치할 수 있습니다. 파일 읽기 작업인 경우 메모리 데이터가 직접 해제되며 교체할 필요가 없습니다. 다음에 파일 쓰기 작업인 경우 변경된 데이터만 필요할 때 파일 시스템에서 직접 복원할 수 있기 때문입니다. 복구를 위해 파일에 저장해야 합니다. 그러나 malloc과 new 함수에 의해 생성된 객체의 데이터는 파일 시스템에 해당 "예약" 파일이 없기 때문에 Swap 공간이 필요하므로 "익명" 메모리 데이터라고 합니다. 이 유형의 데이터에는 스택의 일부 상태 및 변수 데이터도 포함됩니다. 따라서 스왑 공간은 "익명" 데이터를 위한 교환 공간이다.

128M 스왑 제한 돌파

일부 Linux(국내 중국어 버전) 설치 매뉴얼에는 다음과 같은 지침이 있습니다. 스왑 공간은 128M을 초과할 수 없습니다. 왜 이런 말이 나오는 걸까요? 숫자 "128M"의 유래를 설명하기 전에 먼저 질문에 대한 답변을 드리겠습니다. 이제 128M 제한이 전혀 없습니다! 현재 한도는 2G입니다!

리눅스 시스템의 스왑 공간은 페이징되어 있으며, 각 페이지의 크기는 메모리 페이지의 크기와 동일하므로 스왑 공간과 메모리 간의 데이터 교환이 용이합니다. 이전 버전의 Linux에서는 스왑 공간을 구현했을 때 스왑 공간의 첫 번째 페이지를 모든 스왑 공간 페이지에 대한 "비트 맵"으로 사용했습니다. 이는 첫 번째 페이지의 모든 비트가 스왑 공간의 페이지에 해당함을 의미합니다. 이 비트가 1이면 해당 페이지의 Swap이 가능하다는 의미이고, 0이면 해당 페이지는 배드 블록이므로 사용할 수 없다는 의미입니다. 이런 방식으로 첫 번째 스왑 페이지는 매핑 페이지이므로 첫 번째 스왑 매핑 비트는 0이어야 합니다. 또한 마지막 10개의 매핑 비트도 Swap 버전을 나타내기 위해 사용됩니다(원래 버전은 Swap_space, 현재 버전은 swapspace2). 그러면 한 페이지의 크기가 s라면 이 Swap 구현 메소드는 총 "8 * (s - 10) - 1"개의 Swap 페이지를 관리할 수 있다. i386 시스템의 경우 s=4096이면 전체 공간 크기는 133890048입니다. 1MB=2^20Byte를 고려하면 크기는 정확히 128M입니다.
이런 스왑 공간 관리 방법은 스왑 공간의 불량 블록을 방지하기 위한 것입니다. 시스템이 Swap에 불량 블록이 있음을 감지하면 해당 비트맵에 0을 표시하여 이 페이지를 사용할 수 없음을 나타냅니다. 이런 식으로 Swap을 사용하면 불량 블록이 사용되지 않으며 시스템에 오류가 발생합니다.

현재 시스템 설계자들은 다음과 같이 믿습니다.

1. 이제 하드 드라이브의 품질은 불량 블록이 거의 없이 매우 좋습니다.
2. 불량 블록이 있더라도 많지 않습니다. 불량 블록만 나열하면 되며, 페이지마다 매핑을 만들 필요가 없습니다.
3. 불량 블록이 많은 경우 이 하드 드라이브를 스왑 공간으로 사용하면 안 됩니다.

그래서 이제 리눅스는 비트 매핑 방식을 취소하고 128M 제한도 취소했습니다. 주소로 직접 액세스할 수 있으며 2G로 제한됩니다.

스왑 구성이 성능에 미치는 영향

스왑 공간을 너무 많이 할당하면 디스크 공간이 낭비되고, 스왑 공간이 너무 적으면 시스템 오류가 발생합니다.

시스템의 물리적 메모리를 모두 사용하면 시스템이 매우 느리게 실행되지만 스왑 공간을 모두 사용하면 시스템에서 오류가 발생합니다. 예를 들어, 웹 서버는 다양한 요청 수에 따라 여러 서비스 프로세스(또는 스레드)를 생성할 수 있습니다. 스왑 공간을 모두 사용하면 서비스 프로세스를 시작할 수 없으며 일반적으로 "애플리케이션 메모리 부족" 오류가 발생합니다. .심각한 경우 서비스 프로세스의 교착 상태가 발생합니다. 따라서 Swap 공간의 할당은 매우 중요합니다.

일반적으로 스왑 공간은 물리적 메모리 크기보다 크거나 같아야 하며 최소값은 64M 이상이어야 합니다. 일반적으로 스왑 공간 크기는 물리적 메모리의 2~2.5배가 되어야 합니다. 그러나 애플리케이션에 따라 구성이 달라야 합니다. 소형 데스크탑 시스템인 경우에는 더 작은 Swap 공간만 필요하지만, 대형 서버 시스템은 상황에 따라 서로 다른 크기의 Swap 공간이 필요합니다. 특히 데이터베이스 서버와 웹 서버의 경우 방문 횟수가 증가함에 따라 스왑 공간에 대한 요구 사항도 증가하므로 구체적인 구성에 대해서는 각 서버 제품의 지침을 참조하세요.

또한 Swap 파티션의 개수도 성능에 큰 영향을 미칩니다. Swap 작업은 디스크 IO 작업이므로 Swap 영역이 여러 개인 경우 Swap 공간 할당이 모든 Swap에 대해 순환 방식으로 수행되므로 IO 로드 균형이 크게 유지되고 Swap 교환 속도가 빨라집니다. 스왑 영역이 하나만 있는 경우 모든 스왑 작업은 스왑 영역을 매우 바쁘게 만들어 시스템이 대부분의 시간 동안 대기 상태에 있게 되므로 매우 비효율적입니다. 성능 모니터링 도구를 사용하면 현재 CPU 사용량이 많지 않지만 시스템이 느린 것을 알 수 있습니다. 이는 병목 현상이 IO이며 CPU 속도를 높여도 문제를 해결할 수 없음을 나타냅니다.
시스템 성능 모니터링

스왑 공간 할당은 확실히 중요하지만 시스템이 실행되는 동안 성능을 모니터링하는 것은 더욱 중요합니다. 성능 모니터링 도구를 통해 시스템의 다양한 성능 지표를 확인하고 시스템 성능 병목 현상을 찾을 수 있습니다. 이 문서에서는 Solaris에서 Swap과 관련된 일부 명령과 사용법만 소개합니다.

가장 일반적으로 사용되는 것은 Vmstat 명령입니다(대부분의 Unix 플랫폼에 이러한 명령이 있습니다). 이 명령은 대부분의 성능 표시기를 볼 수 있습니다. 예:

vmstat 3

procs memory swap io system cpu 
r b w swpd free buff cache si so bi bo in cs us sy id 
0 0 0 0 93880 3304 19372 0 0 10 2 131 10 0 0 99 
0 0 0 0 93880 3304 19372 0 0 0 0 109 8 0 0 100 
0 0 0 0 93880 3304 19372 0 0 0 0 112 6 0 0 100 
…………
로그인 후 복사

명령 설명:

vmstat 다음 매개변수는 성능 표시기 캡처에 대한 시간 간격을 지정합니다. 3은 3초마다 캡처를 의미합니다. 데이터의 첫 번째 행을 읽을 필요가 없으며 시작 이후의 평균 성능만 반영합니다. 두 번째 줄부터 시스템 성능 지표가 3초마다 반영됩니다. 이러한 성능 지표 중 스왑과 관련된 지표는 다음과 같습니다.

w under procs

메모리를 해제하고 스왑 아웃(3초 이내)해야 하는 현재 프로세스 수를 나타냅니다.

swpd under memory

사용된 스왑 공간의 크기를 나타냅니다.

si는 스왑 아래에 있으므로

si는 초당 현재(3초 이내) 스왑된(스왑 인) 총 메모리 양을 킬로바이트 단위로 나타냅니다. 따라서 매초 현재(3초 이내) 총 양을 나타냅니다. 초당 스왑아웃된 메모리의 양(KB)입니다.

위 표시기가 많을수록 시스템이 더 바쁜 것입니다. 이러한 표시기로 표시되는 시스템 사용량은 시스템의 특정 구성과 관련이 있습니다. 시스템 관리자는 시스템이 정상적으로 동작하고 있을 때 이들 지표의 값을 기록해 둬야 하며, 시스템에 문제가 발생한 경우 이를 비교하여 신속하게 문제점을 찾아내고, 시스템의 정상적인 작동을 위한 표준 지표 값을 공식화해야 한다. 성능 목적을 위해.

또한 Swapon-s를 사용하면 현재 Swap 리소스 사용량을 쉽게 확인할 수 있습니다. 예:

swapon -s

Filename Type Size Used Priority

/dev/hda9 partition 361420 0 3

Swap 공간에서 사용된 리소스와 사용되지 않은 리소스의 크기를 쉽게 확인할 수 있습니다.

좋은 시스템 성능을 보장하려면 스왑 로드를 30% 미만으로 유지해야 합니다.

스왑 공간을 늘리려면 다음 단계를 따르세요.

1) 슈퍼 사용자가 됩니다.

$su - 루트

2) 스왑 파일 만들기

dd if=/dev/zero of=swapfile bs=1024 count=65536

연속된 공간으로 스왑 파일을 만듭니다.

3) 스왑 파일 활성화

/usr/sbin/swapon swapfile

swapfile은 이전 단계에서 생성된 스왑 파일을 의미합니다.

4) 이제 새로 추가된 Swap 파일이 적용되었지만 시스템을 다시 시작한 후에는 이전 단계가 기억되지 않습니다. 따라서 파일 이름과 Swap 유형은 /etc/fstab 파일에 다음과 같이 기록되어야 합니다.

/path/swapfile none Swap sw,pri=3 0 0

5) Swap 파일이 추가되었는지 확인합니다.

/usr/sbin/swapon -s

초과된 스왑 공간을 삭제합니다.

1) 슈퍼유저 되기

2) Swapoff 명령을 사용하여 스왑 공간을 확보하세요.

#/usr/sbin/swapoff 스왑 파일

3) /etc/fstab 파일을 편집하고 이 스왑 파일의 엔터티를 제거합니다.

4) 파일 시스템에서 이 파일을 재활용합니다.

#rm swapfile

5) 물론, Swap 공간이 파일이 아니고 파티션인 경우에는 새로운 파일 시스템을 생성한 후 원본 파일 시스템에 마운트해야 합니다.

관련 권장 사항:

Oracle 스왑 100% 사례 분석

Oracle이 Linux 스왑 파티션을 사용하지 못하도록 방지하는 방법

MySQL이 Linux 스왑 파티션 사용을 방지하고 읽기 및 쓰기 성능을 향상시키는 방법

위 내용은 Linux에서 스왑 파티션의 역할에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Centos와 Ubuntu의 차이 Centos와 Ubuntu의 차이 Apr 14, 2025 pm 09:09 PM

Centos와 Ubuntu의 주요 차이점은 다음과 같습니다. Origin (Centos는 Red Hat, Enterprise의 경우, Ubuntu는 Debian에서 시작하여 개인의 경우), 패키지 관리 (Centos는 안정성에 중점을 둡니다. Ubuntu는 APT를 사용하여 APT를 사용합니다), 지원주기 (Ubuntu는 5 년 동안 LTS 지원을 제공합니다), 커뮤니티에 중점을 둔다 (Centos Conciors on ubuntu). 튜토리얼 및 문서), 사용 (Centos는 서버에 편향되어 있으며 Ubuntu는 서버 및 데스크탑에 적합), 다른 차이점에는 설치 단순성 (Centos는 얇음)이 포함됩니다.

Docker Desktop을 사용하는 방법 Docker Desktop을 사용하는 방법 Apr 15, 2025 am 11:45 AM

Docker Desktop을 사용하는 방법? Docker Desktop은 로컬 머신에서 Docker 컨테이너를 실행하는 도구입니다. 사용 단계는 다음과 같습니다. 1. Docker Desktop 설치; 2. Docker Desktop을 시작하십시오. 3. Docker 이미지를 만듭니다 (Dockerfile 사용); 4. Docker Image 빌드 (Docker 빌드 사용); 5. 도커 컨테이너를 실행하십시오 (Docker Run 사용).

유지 보수를 중단 한 후 Centos의 선택 유지 보수를 중단 한 후 Centos의 선택 Apr 14, 2025 pm 08:51 PM

Centos는 중단되었으며 대안은 다음과 같습니다. 1. Rocky Linux (Best Compatibility); 2. Almalinux (Centos와 호환); 3. Ubuntu 서버 (구성 필수); 4. Red Hat Enterprise Linux (상업용 버전, 유료 라이센스); 5. Oracle Linux (Centos 및 Rhel과 호환). 마이그레이션시 고려 사항은 호환성, 가용성, 지원, 비용 및 커뮤니티 지원입니다.

Centos를 설치하는 방법 Centos를 설치하는 방법 Apr 14, 2025 pm 09:03 PM

CentOS 설치 단계 : ISO 이미지를 다운로드하고 부팅 가능한 미디어를 실행하십시오. 부팅하고 설치 소스를 선택하십시오. 언어 및 키보드 레이아웃을 선택하십시오. 네트워크 구성; 하드 디스크를 분할; 시스템 시계를 설정하십시오. 루트 사용자를 만듭니다. 소프트웨어 패키지를 선택하십시오. 설치를 시작하십시오. 설치가 완료된 후 하드 디스크에서 다시 시작하고 부팅하십시오.

Docker 프로세스를 보는 방법 Docker 프로세스를 보는 방법 Apr 15, 2025 am 11:48 AM

도커 프로세스보기 방법 : 1. Docker CLI 명령 : Docker PS; 2. Systemd Cli 명령 : SystemCTL 상태 Docker; 3. Docker Compose CLI 명령 : Docker-Compose PS; 4. 프로세스 탐색기 (Windows); 5. /Proc Directory (Linux).

Docker 원리에 대한 자세한 설명 Docker 원리에 대한 자세한 설명 Apr 14, 2025 pm 11:57 PM

Docker는 Linux 커널 기능을 사용하여 효율적이고 고립 된 응용 프로그램 실행 환경을 제공합니다. 작동 원리는 다음과 같습니다. 1. 거울은 읽기 전용 템플릿으로 사용되며, 여기에는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함합니다. 2. Union 파일 시스템 (Unionfs)은 여러 파일 시스템을 스택하고 차이점 만 저장하고 공간을 절약하고 속도를 높입니다. 3. 데몬은 거울과 컨테이너를 관리하고 클라이언트는 상호 작용을 위해 사용합니다. 4. 네임 스페이스 및 CGroup은 컨테이너 격리 및 자원 제한을 구현합니다. 5. 다중 네트워크 모드는 컨테이너 상호 연결을 지원합니다. 이러한 핵심 개념을 이해 함으로써만 Docker를 더 잘 활용할 수 있습니다.

VSCODE에 필요한 컴퓨터 구성 VSCODE에 필요한 컴퓨터 구성 Apr 15, 2025 pm 09:48 PM

대 코드 시스템 요구 사항 : 운영 체제 : Windows 10 이상, MacOS 10.12 이상, Linux 배포 프로세서 : 최소 1.6GHz, 권장 2.0GHz 이상의 메모리 : 최소 512MB, 권장 4GB 이상의 저장 공간 : 최소 250MB, 권장 1GB 및 기타 요구 사항 : 안정 네트워크 연결, Xorg/Wayland (LINUX)

Docker 이미지가 실패하면해야 할 일 Docker 이미지가 실패하면해야 할 일 Apr 15, 2025 am 11:21 AM

실패한 Docker 이미지 빌드에 대한 문제 해결 단계 : Dockerfile 구문 및 종속성 버전을 확인하십시오. 빌드 컨텍스트에 필요한 소스 코드 및 종속성이 포함되어 있는지 확인하십시오. 오류 세부 사항에 대한 빌드 로그를보십시오. -표적 옵션을 사용하여 계층 적 단계를 구축하여 실패 지점을 식별하십시오. 최신 버전의 Docker Engine을 사용하십시오. -t [image-name] : 디버그 모드로 이미지를 빌드하여 문제를 디버깅하십시오. 디스크 공간을 확인하고 충분한 지 확인하십시오. 빌드 프로세스에 대한 간섭을 방지하기 위해 Selinux를 비활성화하십시오. 커뮤니티 플랫폼에 도움을 요청하고 Dockerfiles를 제공하며보다 구체적인 제안을 위해 로그 설명을 구축하십시오.

See all articles