현재 위치 - 대출자문플랫폼 - 외환 플랫폼 - Swap 이란 무엇입니까? 고수가 설명해 주세요 ~ ~ 감사합니다 ~

Swap 이란 무엇입니까? 고수가 설명해 주세요 ~ ~ 감사합니다 ~

Swap, 교환구역, 리눅스를 설치할 때 얼마나 많은 사람들이 관심을 가지고 있나요? 실제로 Swap 조정은 Linux 서버, 특히 웹 서버의 성능에 매우 중요합니다. Swap 를 조정하면 시스템 성능 병목 현상을 극복하고 시스템 업그레이드 비용을 절감할 수 있습니다.

우리 모두 알고 있듯이, 현대 운영 체제는 "가상 메모리" 기술을 구현했습니다. 기능적으로 물리적 메모리의 한계를 뛰어 넘었을뿐만 아니라 프로그램이 실제 물리적 메모리보다 더 큰 공간을 조작 할 수있게했습니다. 더 중요한 것은, "가상 메모리" 는 각 프로세스를 격리하는 보안 네트워크이므로 각 프로세스가 다른 프로그램의 간섭을받지 않습니다.

스왑 공간의 역할은 시스템의 물리적 메모리가 충분하지 않을 때 현재 실행 중인 프로그램에 물리적 메모리의 일부를 확보해야 한다는 간단한 설명이다. 여유 공간은 오랫동안 실행되지 않는 일부 프로그램에서 나올 수 있습니다. 이러한 여유 공간은 스왑 공간에 임시로 저장된 다음 프로그램이 실행될 때 저장된 데이터가 스왑 공간에서 메모리로 복구됩니다. 이렇게 하면 물리적 메모리가 부족할 때 시스템이 항상 교환됩니다.

컴퓨터 사용자들은 종종 이런 현상을 만난다. 예를 들어 Windows 시스템을 사용할 때 여러 프로그램을 동시에 실행할 수 있습니다. 오랫동안 주의를 기울이지 않은 프로그램으로 전환하면 하드 디스크 "삐걱거리는" 소리가 들립니다. 그 이유는 이 프로그램의 메모리가 자주 실행되는 프로그램에 의해' 도난' 되어 교환구역에 배치되기 때문이다. 그래서 이 프로그램이 프런트엔드에 놓이면 교환구역에서 자신의 데이터를 검색해 메모리에 넣은 다음 계속 실행한다.

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

128M 교환 제한을 돌파하다.

일부 리눅스 (중국어 버전) 설치 매뉴얼에서 스왑 공간이 128M 을 초과할 수 없다는 것을 자주 볼 수 있는데, 왜 이런 말이 나올까? "128M" 이라는 숫자의 기원을 설명하기 전에 한 가지 질문에 대한 답을 제시하십시오. 현재 128M 의 제한은 없습니다! 이제 한계는 2G 입니다!

스왑 공간은 페이지마다 메모리 페이지와 크기가 같은 페이징 공간으로, 스왑 공간과 메모리 간의 데이터 교환을 용이하게 합니다. 레거시 Linux 에서 스왑 공간을 구현할 때 스왑 공간의 첫 페이지는 스왑 공간의 모든 페이지에 대한 "비트맵" 으로 사용됩니다. 즉, 첫 페이지의 각 페이지는 한 페이지의 스왑 공간에 해당합니다. 이 비트가 1 이면 해당 페이지에서 Swap 을 사용할 수 있습니다. 0 인 경우 페이지가 손상된 블록이므로 사용할 수 없습니다. 따라서 첫 번째 페이지 교환은 매핑 페이지이기 때문에 첫 번째 교환 매핑 비트는 0 이어야 합니다. 또한 마지막 10 매핑 비트도 Swap 버전 (이전 버전은 Swap_space, 현재 버전은 swapspace2) 을 나타내는 데 사용됩니다. 한 페이지의 크기가 S 인 경우 이 스왑 구현 방법은 "8 * (s- 10)- 1" 개의 스왑 페이지를 관리합니다. I386 시스템의 경우 s=4096 이면 공간 크기 * * * 는 133890048 이고1MB = 2 20 바이트이면 크기는 정확히/입니다. .....

이런 방식으로 스왑 공간 관리를 실현하는 이유는 스왑 공간의 불량 블록을 방지하기 위해서이다. 시스템에서 스왑 메모리에 손상된 블록이 있음을 감지하면 해당 비트맵에 0 으로 표시되어 페이지를 사용할 수 없음을 나타냅니다. 이렇게 하면 Swap 를 사용할 때 손상된 블록이 사용되지 않아 시스템 오류가 발생할 수 있습니다.

오늘날의 시스템 설계자는 다음과 같이 생각합니다.

1. 지금 하드 드라이브의 품질이 매우 좋아, 불량 블록이 매우 적다.

2. 있어도 많지는 않습니다. 나쁜 블록만 나열해 주시면 됩니다. 페이지마다 지도를 만들 필요는 없습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언)

3. 만약 많은 불량 블록이 있다면, 너는 이 하드 드라이브를 교환공간으로 사용해서는 안 된다.

그 결과, 현재 Linux 는 비트 매핑 방법을 취소하고 128M 의 제한을 제거하여 주소별로 직접 액세스하며 2G 만 가능합니다.

스위칭 구성이 성능에 미치는 영향

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

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

일반적으로 스왑 공간은 물리적 메모리의 크기보다 크거나 같아야 하며 최소 64M 이상이어야 합니다. 일반적으로 스왑 공간은 물리적 메모리 크기의 2-2.5 배가 되어야 합니다. 그러나 어플리케이션에 따라 구성이 달라야 합니다. 소형 데스크탑 시스템의 경우 스왑 공간이 작고 대형 서버 시스템의 경우 스왑 공간이 다릅니다. 특히 데이터베이스 서버와 웹 서버는 방문이 늘어남에 따라 스왑 공간에 대한 요구도 증가한다. 특정 구성은 서버 제품 설명을 참조하십시오.

또한 스왑 파티션 수는 성능에 큰 영향을 미칩니다. 스왑 작업은 디스크 IO 의 작업이기 때문에 여러 스왑 영역이 있는 경우 스왑 공간 할당이 모든 스왑에서 순차적으로 작동하므로 IO 로드의 균형이 크게 조정되고 스왑 속도가 빨라집니다. 하나의 스왑 영역만 있는 경우 모든 스왑 작업으로 인해 스왑 영역이 매우 사용 중이므로 시스템이 대부분 대기 중이며 효율성이 떨어집니다. 성능 모니터링 도구를 사용하면 CPU 가 바쁘지는 않지만 시스템이 느리다는 것을 알 수 있습니다. 즉, 병목 현상은 IO 에 있으며 CPU 속도를 높여도 문제가 해결되지 않는다는 것을 알 수 있습니다.

시스템 성능 모니터링

스왑 공간 할당은 매우 중요하지만 시스템 작동 중 성능 모니터링이 더 중요합니다. 성능 모니터링 도구를 통해 시스템의 성능 지표를 검사하여 시스템 성능의 병목 현상을 파악할 수 있습니다. 이 문서에서는 Solaris 에서 Swap 와 관련된 몇 가지 명령과 사용법에 대해서만 설명합니다.

가장 일반적인 명령은 대부분의 성능 지표를 볼 수 있는 Vmstat (대부분의 Unix 플랫폼 아래에 몇 가지 명령이 있음) 입니다.

예를 들면 다음과 같습니다.

# vmstat 3

Procs 메모리 스위칭 입출력 시스템 CPU

R b w swpd 유휴 버퍼 캐시 si so bi bo in cs us sy id

0 0 0 0 93880 330419372 0 010 213110 0 0 0 99

0 0 0 0 93880 330419372 0 0 0 0 0109 80 0 0 0100

0 0 0 0 93880 330419372 0 0 0 0 0112 6 0 0 0100

...... ......

명령 설명:

Vmstat 뒤의 매개 변수는 성능 지표를 캡처하는 시간 간격을 지정합니다. 3 은 3 초에 한 번 캡처됨을 의미합니다. 첫 번째 데이터 행은 읽을 필요도 없고, 가치도 없고, 부팅 이후 평균 성능만 반영된다. 두 번째 행부터 3 초 간격으로 시스템 성능 지표를 반영합니다. 부문 별 접근법과 관련된 이러한 성과 지표는 다음과 같습니다.

W 절차에 따라

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

메모리 아래의 Swpd

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

네, 그래서 교환에서

Si 는 현재 (3 초 이내) 초당 메모리 (교체) 로 교체되는 총 양 (킬로바이트) 을 나타냅니다. 을 눌러 섹션을 인쇄할 수도 있습니다 So 는 현재 (3 초 이내) 초당 교체된 총 메모리 양 (킬로바이트) 을 나타냅니다.

위의 지표 수가 클수록 시스템이 더 바쁩니다. 이러한 표시기에 표시된 시스템 사용 정도는 시스템의 특정 구성과 관련이 있습니다. 시스템 관리자는 시스템 가동 시 이러한 지표의 값을 기록하고, 시스템 문제 발생 시 비교하여 문제를 신속하게 파악하고, 성능 모니터링을 위한 시스템 정상 작동을 위한 표준 지표 값을 개발해야 합니다.

또한 Swapon-s 를 사용하면 스왑 리소스의 현재 사용량을 간단히 확인할 수 있습니다. 예를 들면 다음과 같습니다.

# swapon -s

파일 이름 유형 크기 사용 우선 순위

/dev/hda9 파티션 361420 0 0 3

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

스위칭 부하는 시스템의 양호한 성능을 보장하기 위해 30% 이하로 유지되어야 합니다.

교환 작업에 대한 시스템 명령 정보

다음 단계에 따라 스왑 공간을 늘리십시오.

1) 수퍼유저가 됩니다.

$su-root

2) 스왑 파일 만들기

# DD if =/dev/zeroof = swap filebs =1024 count = 65536

연속 공간이 있는 스왑 파일을 작성합니다.

3) 스왑 파일 활성화

#/usr/sbin/swapon 교환 파일

스왑 파일은 이전 단계에서 만든 스왑 파일입니다. 4) 새로 추가된 스왑 파일은 이미 작동하지만 시스템이 재부팅된 후에는 이전 단계가 기억나지 않습니다. 따라서 파일 이름과 교환 유형을 /etc/fstab 파일에 기록합니다. 예를 들면 다음과 같습니다.

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

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

/usr/sbin/swapon -s

불필요한 스왑 공간을 제거합니다.

1) 수퍼유저가 됩니다.

2) Swapoff 명령을 사용하여 스왑 공간을 재확보합니다.

#/usr/sbin/swapoff 교환 파일

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

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

#rm 스왑 파일

5) 물론 이 스왑 공간이 파일이 아니라 파티션이라면 새 파일 시스템을 만들어 원래 파일 시스템에 첨부해야 합니다.

copyright 2024대출자문플랫폼