차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
thp_transparent_huge_pages_기능과_설정_방법 [2019/07/10 08:58] – [THP(Transparent Huge Pages) 란?] koov | thp_transparent_huge_pages_기능과_설정_방법 [2020/11/29 09:09] (현재) – [참조링크] koov | ||
---|---|---|---|
줄 8: | 줄 8: | ||
정확히 어떤 방식으로 어떤 기능을 하는 것인지는 설명되어 있지 않아 자세히 설명드리겠습니다. | 정확히 어떤 방식으로 어떤 기능을 하는 것인지는 설명되어 있지 않아 자세히 설명드리겠습니다. | ||
- | 페이지는 메모리를 일정한 크기로 나누어 관리하는 단위입니다. | + | 페이지는 |
- | CPU는 메모리에 데이터를 요청할때 Virtual address를 통해 요청하고 | + | CPU는 메모리에 데이터를 요청할때 Virtual address를 통해 요청하고 MMU가 그것을 Physical address로 변환시켜 실제 메모리에 엑세스 하게 됩니다. 여기서 |
- | MMU가 그것을 Physical address로 변환시켜 실제 메모리에 엑세스 하게 됩니다. | + | |
- | 여기서 Virtual address와 Physical address를 연결해주는 테이블이 Page table이고 | + | |
- | 이 테이블이 존재하는 위치를 담은 것이 TTB (Translation Table Base Address) 입니다. | + | |
- | CPU가 매번 TTB를 통해 물리 메모리에 접근해서 데이터를 가져오게 되면 속도가 느리므로 | + | CPU가 매번 TTB를 통해 물리 메모리에 접근해서 데이터를 가져오게 되면 속도가 느리므로 Virtual address 로부터 Physical address로의 매핑 정보를 가진 Entry를 가진 캐시가 있다면 메모리를 거치지 않고도 바로 Physical address를 얻을 수 있게 되어 속도가 빨라질 것입니다. 이 캐시 역할을 하는 것이 TLB (Translation Lookaside Buffer) 입니다. |
- | Virtual address 로부터 Physical address로의 매핑 정보를 가진 Entry를 가진 캐시가 있다면 | + | |
- | 메모리를 거치지 않고도 바로 Physical address를 얻을 수 있게 되어 속도가 빨라질 것입니다. | + | |
- | 이 캐시 역할을 하는 것이 TLB (Translation Lookaside Buffer) 입니다. | + | |
- | CPU가 Virtual Address로 메모리를 엑세스 하려 하면 | + | CPU가 Virtual Address로 메모리를 엑세스 하려 하면 캐시 역할을 하는 TLB 내 Virtual Address Entry들에 매핑된 정보가 있는지 확인하고 만약 있다면(hit) 곧바로 메모리에 엑세스해서 데이터를 가져오지만 없다면(miss) 메모리의 TTB(Translation Table Base Address)에 1차적으로 접근하여 Physical address를 구해온 뒤 구해온 Physical address를 이용해 메모리에 또 한번 접근하여 데이터를 가져옵니다. |
- | 캐시 역할을 하는 TLB 내 Virtual Address Entry들에 매핑된 정보가 있는지 확인하고 | + | |
- | 만약 있다면(hit) 곧바로 메모리에 엑세스해서 데이터를 가져오지만 | + | |
- | 없다면(miss) 메모리의 TTB(Translation Table Base Address)에 1차적으로 접근하여 Physical address를 구해온 뒤 | + | |
- | 구해온 Physical address를 이용해 메모리에 또 한번 접근하여 데이터를 가져옵니다. | + | |
여기서 hit ratio가 떨어진다고 하면 miss 되어 메모리에 2번 접근하는 횟수가 늘어나므로 성능 저하가 일어납니다. | 여기서 hit ratio가 떨어진다고 하면 miss 되어 메모리에 2번 접근하는 횟수가 늘어나므로 성능 저하가 일어납니다. | ||
(즉, hit ratio가 낮다면 TLB 존재의 의미가 없어지게 됩니다.) | (즉, hit ratio가 낮다면 TLB 존재의 의미가 없어지게 됩니다.) | ||
- | 따라서 이 hit ratio가 높아지려면 TLB 내의 Entry에 들어갈 내용이 작아야 하는데, | + | 따라서 이 hit ratio가 높아지려면 TLB 내의 Entry에 들어갈 내용이 작아야 하는데, 대용량 메모리를 사용할수록 page와 page table 개수가 많아지므로 TLB 내의 Entry가 커지게 됩니다. Entry를 작게 하려면 page 자체의 크기를 늘려서 개수를 줄이는 방법을 써야 하는데 그것이 THP입니다. |
- | 대용량 메모리를 사용할수록 page와 page table 개수가 많아지므로 TLB 내의 Entry가 커지게 됩니다. | + | |
- | Entry를 작게 하려면 page 자체의 크기를 늘려서 개수를 줄이는 방법을 써야 하는데 그것이 THP입니다. | + | |
- | THP는 기존 4KB 크기의 페이지 대신 2MB 혹은 1GB 크기의 페이지를 동적으로 할당하여 사용하는 기능이며 | + | THP는 기존 4KB 크기의 페이지 대신 2MB 혹은 1GB 크기의 페이지를 동적으로 할당하여 사용하는 기능이며 '' |
- | '' | + | |
하지만 원래 THP 기능의 의도와는 달리 오히려 시스템 성능이 저하되는 경우가 많아 이 옵션을 disable 시키는 것을 권장합니다. | 하지만 원래 THP 기능의 의도와는 달리 오히려 시스템 성능이 저하되는 경우가 많아 이 옵션을 disable 시키는 것을 권장합니다. | ||
줄 129: | 줄 116: | ||
THP는 커널 설정과 tuned 설정에 의해 활성화되므로 이 2가지를 모두 비활성화 시킬 필요가 있습니다. | THP는 커널 설정과 tuned 설정에 의해 활성화되므로 이 2가지를 모두 비활성화 시킬 필요가 있습니다. | ||
- | Step 1: Initially, we should create a customized version of the currently running | + | ==== tuned Profile 설정 ==== |
+ | 새로운 tuned profile을 만든 뒤 active 상태로 설정 합니다. 아래와 같이 명령어를 입력하여 현재 active 상태인 tuned profile을 확인합니다. | ||
- | |||
- | * 새로운 tuned profile을 만든 뒤 active 상태로 설정 | ||
- | |||
- | |||
- | 아래와 같이 명령어를 입력하여 현재 active 상태인 tuned profile을 확인합니다. | ||
< | < | ||
[root@host]# | [root@host]# | ||
줄 175: | 줄 158: | ||
</ | </ | ||
- | * 커널 파라미터 추가 | + | ==== 커널 파라미터 추가 |
- | / | + | '' |
<code vim / | <code vim / | ||
줄 190: | 줄 174: | ||
</ | </ | ||
- | grub2-mkconfig를 통해 grub.cfg 파일을 재생성합니다. | + | '' |
< | < | ||
[root@host]# | [root@host]# | ||
줄 206: | 줄 190: | ||
===== 참조링크 ===== | ===== 참조링크 ===== | ||
- | * http:// | + | * https:// |
+ | * https:// | ||
* http:// | * http:// |