리눅스 페이지
시스템에 물리적으로 존재하는 것보다 더 많은 양의 메모리를 사용하기 위한 기법이다.
가상 메모리(virtual memory)는 메모리를 필요로 하는 서로 경쟁하는 프로세스 사이에 메모리를 공유하도록 하여, 시스템이 실제 가진 것보다 더 많은 메모리를 가진 것처 럼 보이도록 한다.
유닉스 파일 시스템
Boot Block
Super Block
Inode list
파일 하나당 inode 할당, inode는 파일의 정보인 접근 권한, 소유주, 파일 크기, inode 번호 등을 저장하는 부분이다.
Data Block
실제로 데이터의 내용이 저장되는 디스크 영역
Page Cache
처음 파일의 내용을 읽을때는 disk에서 읽어오고 Page Cache영역에 저장. 이후 재접근이 일어나게 될경우 디스크의 내용을 전달하는 것이 아닌 메모리의 Page Cache 영역에 저장된 내용 전달
Page Cache 영역은 전
Huge page는 노드 커널이 기본 페이지 크기보다 훨씬 큰 메모리 블록을 할당하는 리눅스 관련 기능이다.
메모리 블록마다 페이지 크기가 정해져있나?
https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-memory-transhuge
메모리는 페이지 (pages)라는 블록에서 관리됩니다. 한 페이지는 4096 바이트입니다.
대량의 메모리를 관리하기 위해 시스템을 활성화할 수 있는 다음과 같은 두 가지 방법이 있습니다:
https://linux.systemv.pe.kr/tag/hugepage-%EB%9E%80/
MMU : 가상 메모리 주소를 물리적 메모리 주소로 변환
Page Map : 가상 메모리 주소 공간을 특정 크기 단위로 쪼갠 페이지, 실제 물리 메모리 주소를 특정 크기 단위로 쪼갠 페이지를 서로 매핑 시켜 논 것
TLB(Translation Lookaside Buffer) : 매핑 테이블을 계속 풀스캔하면 성능이 안나오기때문에 페이지 테이블 검색 속도를 높이기 위해서 중간에 캐쉬를 놓은 것
Huge Page : Huge Page는 기본 페이지 크기보다 더 크게 설정할 수 있도록 해주는것, 페이지의 개수가 줄어들기 때문에 매핑테이블의 크기가 줄어들고 TLB에서 바로 찾을 수 있는 확률이 늘어나 매핑테이블을 풀스캔할 확률이 줄어든다. => 근데 이거 앱에서는 필요없을 것같은데... 일단 넣어놓을까