RAM이 부분적으로 가득 차면 지연이 발생하는 이유는 무엇입니까?

RAM이 부분적으로 가득 차면 지연이 발생하는 이유는 무엇입니까?

RAM이 부분적으로 가득 차면(가령 80%) 더 많은 데이터를 저장할 수 있는 공간이 있음에도 불구하고 장치가 많이 지연되는 이유는 무엇입니까? 제가 기대하는 것은 99%까지 잘 작동한다는 것입니다.

나는 RAM이 더 작기 때문에 PC보다 모바일에서 더 많은 것을 발견했습니다. 예를 들어 내 모바일에는 2GB RAM이 있습니다. 여유 RAM이 1GB 미만이면 속도가 많이 느려집니다! 아직 사용할 용량이 1GB 정도 있는데 왜 그런 일이 발생합니까?

답변1

여기에는 많은 내용이 포함되어 있지만 최대한 간단하게 설명하고 거의 모든 OS에 적용할 수 있도록 노력하겠습니다.

여기에는 두 가지 기본 원칙이 있습니다.

  1. RAM에 있어야 하는 모든 항목과 RAM에 있으면 도움이 되는 항목의 총계는 거의 항상 RAM 크기보다 큽니다. RAM에 있으면 이점을 얻을 수 있는 것에는 프로세스 작업 세트와 대기 목록이 포함됩니다. 후자에는 한때 활발하게 사용되었지만 이후에는 비활성화된 데이터와 코드가 포함되어 있습니다. 이 중 대부분은 다시 사용될 것이며 일부는 곧 사용될 것이므로 RAM에 보관하는 것이 좋습니다. 이 메모리는 일종의 캐시 역할을 하지만 꼭 필요한 것은 아니므로 사용 가능한 메모리 범주에 속합니다. 여유 메모리와 마찬가지로 이를 필요로 하는 모든 프로그램에 신속하게 제공할 수 있습니다. 성능을 위해서는 대기 메모리가 커야 합니다.

  2. 메모리 블록의 사용 빈도는 무작위가 아니지만 상당한 정확도로 예측할 수 있습니다. 메모리는 블록으로 나누어지며, 대개 4K 바이트입니다. 일부 블록은 초당 여러 번 액세스되는 반면 다른 블록은 시스템이 충분히 오랫동안 가동된 경우 몇 분, 몇 시간, 며칠 또는 몇 주 동안 액세스되지 않았습니다. 이 두 가지 극단 사이에는 다양한 용도가 있습니다. 메모리 관리자는 최근에 액세스된 블록과 그렇지 않은 블록을 알고 있습니다. 최근에 액세스한 메모리 블록이 곧 다시 필요할 것이라는 것은 합리적인 가정입니다. 최근에 액세스되지 않은 메모리는 아마도 곧 필요하지 않을 것입니다. 오랜 경험을 통해 이것이 타당한 원칙임이 입증되었습니다.

메모리 관리자는 두 번째 원칙을 활용하여 첫 번째 원칙의 바람직하지 않은 결과를 크게 완화합니다. 이를 위해 최근에 액세스한 데이터를 RAM에 보관하는 동시에 거의 사용되지 않는 데이터를 원본 파일이나 페이지 파일에 보관하는 균형 작업을 수행합니다.

RAM이 충분하면 균형을 맞추는 작업이 쉽습니다. 최근에 사용되지 않은 데이터의 대부분은 RAM에 보관할 수 있습니다. 이것은 좋은 상황입니다.

작업량이 증가하면 상황은 더욱 복잡해집니다. 사용되는 데이터와 코드의 총합은 더 커지지만 RAM 크기는 동일하게 유지됩니다. 이는 이 중 더 작은 부분 집합을 RAM에 보관할 수 있음을 의미합니다. 최근에 사용되지 않은 데이터 중 일부는 더 이상 RAM에 있을 수 없으며 디스크에 남아 있어야 합니다. 메모리 관리자는 활성 사용 중인 메모리와 사용 가능한 메모리 간의 적절한 균형을 유지하기 위해 매우 열심히 노력합니다. 그러나 작업 부하가 증가하면 메모리 관리자는 실행 중인 프로세스에 더 많은 사용 가능한 메모리를 제공해야 합니다. 이는 좋은 상황은 아니지만 메모리 관리자에게는 선택의 여지가 없습니다.

문제는 프로그램이 실행될 때 RAM에서 데이터를 이동하는 데 시간이 걸린다는 것입니다. RAM이 충분하면 자주 발생하지 않으며 눈에 띄지도 않습니다. 그러나 RAM 사용량이 높은 수준에 도달하면 훨씬 더 자주 발생합니다. 상황이 너무 나빠져서 실제로 RAM을 사용하는 데 소요되는 것보다 RAM에서 데이터를 이동하는 데 더 많은 시간이 소요될 수 있습니다. 이는 스래싱(thrashing)으로, 메모리 관리자가 피하려고 매우 열심히 노력하지만 작업 부하가 높으면 피할 수 없는 경우가 많습니다.

메모리 관리자는 당신 옆에 있으며, 불리한 조건에서도 최적의 성능을 유지하기 위해 항상 최선을 다하고 있습니다. 그러나 작업량이 많고 사용 가능한 메모리가 부족하면 계속 작동하려면 나쁜 일을 해야 합니다. 사실 그것이 가장 중요한 것입니다. 우선순위는 먼저 작업을 계속 실행한 다음 가능한 한 빨리 실행하는 것입니다.

답변2

모든 최신 운영 체제는 데이터 캐싱을 위해 사용하지 않는 메모리를 사용하므로 느린 저장소 대신 빠른 RAM에서 액세스할 수 있습니다. 응용 프로그램은 캐시를 지우고 필요한 경우 사용할 수 있지만 실제로는 여전히 사용되고 있기 때문에 일반적으로 이를 여유 메모리로 보고합니다. 데이터가 적을수록 캐시할 수 있는 데이터도 적어지고 컴퓨터 속도도 느려집니다.

답변3

이 답변은 구조를 재구성하고 메시지를 더 명확하게 만들기 위해 대부분 다시 작성되었습니다. 또한 커뮤니티 위키 답변으로도 열었습니다. 자유롭게 편집하세요.

페이징은 고정된 크기의 메모리 블록에 프로세스가 할당되는 메모리 관리 체계입니다. 메모리 사용량이 높은 수준(예: 용량의 80%)으로 증가하면 페이징이 RAM에서 vRAM(가상 RAM)으로 확장되기 시작합니다.

vRAM은 시스템 스토리지, 일반적으로 하드 드라이브 또는 기타 상당한 규모의 스토리지 위치에 있습니다.

프로세스는 메모리로 실행되도록 하드 드라이브의 일부에 할당되며 해당 섹션을 RAM으로 처리합니다. 이는 완전히 정상적인 프로세스이지만 vRAM과의 데이터 전송에 소요되는 시간이 늘어나면 시스템 성능이 저하됩니다.

전용 RAM은 빠른 연결을 제공하는 CPU에서 마더보드를 통해 직접 액세스되는 반면, 가상 RAM은 보드와 vRAM 위치 사이의 케이블 연결을 가로질러야 합니다.

그러나 이는 성능에 약간의 영향만 미칩니다. vRAM에 대한 페이징이 발생하는 속도가 급격히 증가하면(전용 RAM이 용량에 접근할 때) 스래싱이 발생합니다.

스래싱은 메모리 페이지를 가상 메모리로 빠르고 빠르게 전송하는 방법입니다. 데이터를 가져오고 주소를 지정하는 데 더 많은 시간이 소요되므로 성능에 큰 타격을 줍니다.

30자리 숫자를 적고 싶다고 가정해 보겠습니다. 메모장을 들고 화면 옆에 앉아서 쓰거나(전용 메모리 사용) 5개의 덩어리를 기억하고 다음 방으로 가서 거기에 있는 메모장에 적을 수 있습니다(가상 메모리 사용). 둘 다 작업을 완료하지만 어느 쪽이 더 빠를까요?

자세히 알아보기여기에 태싱!

다음을 포함하여 이 답변에 기여한 분들께 큰 감사를 드립니다.다니엘 B,제노이드그리고존 벤틀리.

답변4

기억하세요, 하드 드라이브는 크기의 순서입니다더 느리게RAM보다 RAM 자체가 (전체 아키텍처에서) 처음부터 그렇게 빠르지는 않습니다. 액세스 속도 순서에 따라(각 단계는 위의 단계보다 훨씬 느립니다)

  1. 프로세서 레지스터- 실질적으로 레지스터 사용 가능1 프로세서 사이클 이내. 프로세서가 초당 수십억 사이클(3GHz = 초당 30억 사이클)을 수행한다는 점을 고려하면 이는 엄청나게 빠른 속도입니다.
  2. 프로세서 캐시- 수준에 따라 다르지만 여전히 꽤 빠릅니다(L1 캐시의 경우 3~5주기 사용 가능).
  3. 랜덤 액세스 메모리(RAM)- 랜덤한 부분은 접속 시 어떤 상태인지 알 수 없다는 의미입니다. 멈춰서 패키지를 집은 다음 문으로 걸어가 초인종을 누르고 응답을 기다려야 하는 패키지 배달원을 생각해 보십시오. 어쩌면 전혀 기다리지 않을 수도 있고, 스미스 부인이 집 뒤쪽 문으로 갈 때까지 1~2분 정도 기다릴 수도 있습니다. 실제적인 측면에서 우리는 14~27주기(RAM에 액세스했을 때 RAM의 상태에 따라 다름)에 대해 이야기하고 있습니다.
  4. 하드 디스크 드라이브- 지금 여기에는 물리적인 과정이 있으며 가능한 한 빨리 일어나는 동안 머리가 움직이고 머리 아래로 트랙이 움직일 때까지 기다리고 있습니다. 실용적인 측면에서,7,200RPM HDD는 약 4ms 안에 회전을 완료할 수 있습니다., 아니면 주변 어딘가에3GHz 프로세서의 경우 750,000사이클. 느리네요.

가상 메모리 관리자는 도박꾼입니다. 항상 모든 RAM이 필요하지는 않을 것이므로, 정보에 근거한 추측을 하고 (이 글을 읽는 동안 지난 10분 동안 백그라운드에 있었던) 문서 프로그램이 그렇지 않다는 주사위를 굴립니다. 정말 중요해서 HDD에 밀어 넣습니다.

하지만 문서로 다시 클릭하면 됩니다! 이제 VMM은 HDD에서 모든 데이터를 다시 로드해야 합니다. 더 나쁜 것은 RAM이 부족하면 이제 사용 가능한 공간을 확보하기 위해 다른 데이터(더 많은 도박)를 HDD에 푸시해야 한다는 것입니다. Linux는 여기서 가장자리에 사는 것을 좋아합니다. 자주 사용되는 데이터로 대부분의 RAM을 채웁니다(프로세스가 거의 없는 서버에 적합).

관련 정보