리눅스 메모리 관리

바퀴달린 개발자·2021년 10월 20일
0
  • 10/20 수강

리눅스

  • 서버에 적합한 운영체제~

메모리란?

  • 좁은 의미로는 메인 메모리(RAM)
  • 컴퓨터에서 메모리는 유일한 작업 공간
    프로세스는 cpu에서 바로 계산할 수 없고 반드시 메모리 적재 후에 실행할 수 있다.

리눅스 메모리 관리란?

  • 작업공간을 필요로 하는 프로세스를 위해 리눅스가 메인메모리를 관리하고 운영하는 방법
    (메모리를 필요로하는 프로세스를 리눅스가 관리해좀)

메모리 오버레이

: 할당 받은 메모리보다 큰 프로세스를 실행시키기 위해 프로세스의 크기를 일정량 잘라서 메모리에 적재하는 방법
만약, 프로세스의 크기보다 할당받은 메모리 크기가 작다면?

-> 보조메모리 (하드디스크나 SSD)를 사용한다.

가상 메모리

  • 하드디스크, SSD
  • 실제 디스크를 마치 메모리처럼 사용하는 것
  • 프로세스는 실제 메모리로 인식함

추가 용어

  1. 페이지 : 가상 메모리 시스템에서 메모리를 다룰 때 사용하는 최소 크기 단위, 리눅스에서는 4KB
  2. 스왑 아웃 : 메인 메모리의 프로세스에서 일정 페이지를 잘라서 가상메모리로 가져가는 것
  3. 스왑 아웃 : 가상 메모리에 옮겨 두었던 프로세스의 페이지를 다시 메인 메모리로 가지고 오는 것

가상 메모리와 성증

  • 가상 메모리와 메모리를 스왑하는 비용때문에 큰 성능 저하가 발생한다.
  • 스와핑이 발생하지 않도록 메모리 여유율을 잘 해야한다.
  • vmstat으로 모니터링 할 수 있다.

vmstat

컬럼중에

  • free : 사용 가능한 메모리양
  • so(swap out)
    free가 0이거나 so가 지속적으로 숫자가 올라간다면 메모리에 성능저하가 일어나고 있다.

vmstat [딜레이][횟수]

ex) vmstat 1 5 -> 1초간 5번의 간격으로 출력

vmstat 1 >> log.txt

파일에 로그를 남길 수 있음

메모리 항목 (파일 캐시)

  • swpd : 사용하고 있는 가상 메모리양
  • free : 사용 가능한 메인 메모리양
  • buff : 파일 시스템의 메타 데이터와 관련된 블록들을 저장하는 캐시
  • cache : cache는 파일의 내용을 저장하고 있는 캐시

파일 캐시

  • 파일 I/O는 상대적으로 메모리보다 속도가 느린 디스크의 리소스를 사용하는 작업.
  • 때문에 파일 I/O 작업이 많이 발생하면 성능이 떨어지게 됨.
  • 이를 개선하기 위해 리눅스는 한 번 읽음 파일의 내용을 메모리에 캐시해 두었다가 사용함.
    -> buff, cache

프로세스가 파일 i/o 작업을 요청하면 파일이 메모리로 이동한다. ㅏ그러면 리눅스가 느리니까 캐시해야한다고 해서 메모리에 캐시를 해준다. 이때 이게 buff와 cache

추천책
실무로 배우는 서버 관리(?)

참조
https://www.youtube.com/watch?v=OPdjLaW0flU&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=104

0개의 댓글