연구팀을 위해 데이터를 뽑는 도중 큰 데이터를 뽑다가 서버를 터트렸다.
해당 원인에 대해서 공부했던 내용에 대해서 서술한다.
가상 메모리(swap)란?
가상 메모리는 물리적인 RAM이 부족할 때 디스크 공간의 일부를 RAM처럼 사용하는 시스템이다. 이는 임시 방편으로 RAM이 부족한 상황에서 프로세스를 계속 실행하게 해준다.
예를 들어, 사용자가 8GB RAM을 갖춘 컴퓨터에서 10GB의 메모리를 요구하는 대규모 응용 프로그램을 실행하려고 시도한다면, 실제 물리적인 RAM만으로는 충분하지 않다. 이때, 운영체제는 2GB의 데이터를 하드 디스크의 swap 영역에 저장하게 된다.
이로 인해 사용자는 마치 10GB의 RAM이 있는 것처럼 프로그램을 실행할 수 있다. 하지만, 디스크 I/O는 RAM보다 느리므로 swap을 사용할 때의 성능은 RAM을 직접 사용할 때보다 느릴 수 있다.
가상 메모리의 동작 원리
이 때 물리 메모리(RAM)가 부족하게 되면, 운영체제는 잘 사용하지 않는 메모리 페이지를 가상 메모리 영역으로 이동(swap out)시킨다. 반대로, 해당 페이지가 다시 필요하면 가상 메모리에서 물리 메모리로 다시 가져온다(swap in). 이 때 디스크 I/O를 사용한다.
CPU 점유율의 급증의 원인
I/O 연산: 디스크 I/O는 RAM에 비해 상당히 느리다. swap 영역에 데이터를 쓰거나 읽는 것은 RAM에서 직접 데이터를 처리하는 것에 비해 훨씬 오래 걸린다. 따라서, swap을 자주 사용하면 이로 인해 발생하는 I/O 연산이 CPU 부하를 증가시킨다.
페이지 폴트: 물리 메모리에서 페이지가 사라지고 swap 영역으로 이동하면, 해당 페이지에 접근할 때 페이지 폴트(page fault)가 발생한다. 페이지 폴트(page fault)는 프로세스가 접근하려고 하는 메모리 페이지가 물리적인 메모리(RAM)에 로드되어 있지 않을 때 발생하는 상황을 말한다. 페이지 폴트가 발생하면 운영체제는 해당 페이지를 물리 메모리에 로드해야 한다. 이런 페이지 폴트 처리도 CPU 부하를 증가시키는 원인 중 하나이다.
해결 방안
메모리 추가: 물리 메모리를 추가하여 RAM 용량을 늘리는 것이 가장 확실한 해결책이다.
코드 개선: 가상 메모리를 사용하지 않게 코드를 잘 짜자 (ex) 큰 데이터를 전부 메모리에 올리지 않는다)
가상 메모리는 물리 메모리가 부족할 때 임시로 사용하는 메모리로, 성능 문제의 주요 원인이 될 수 있다. 이를 효과적으로 관리하려면 시스템의 메모리 사용 패턴을 잘 이해하고, 적절한 최적화 방법을 적용해야 한다.
'Computer Science > Operating System' 카테고리의 다른 글
[CS] 운영체제 - 디스크 관리와 스케줄링 (0) | 2022.09.07 |
---|---|
[CS] 운영체제 - 파일 시스템 (0) | 2022.09.06 |
[CS] 운영체제 - 가상 메모리 (0) | 2022.09.06 |
[CS] 운영체제 - 메모리 관리 (0) | 2022.09.06 |
[CS] 운영체제 - Deadlock (0) | 2022.09.01 |