티스토리 뷰
vmap 은 주로 비연속적(non-contiguous)인 물리 페이지들을 연속적인 가상 주소 공간으로 매핑. 그러나 각 물리 페이지에 tlb 는 하나씩
mem_map 으로는 원래 두번 테이블을 타야했는데, vmemmap 으로 64비트에서는 조금더 빠르게 하는 것 같다
https://elixir.bootlin.com/linux/v4.9/source/include/asm-generic/memory_model.h#L53
sparse.c:sparse_init -> sparse_early_mem_map_alloc (each_section) -> sparse_init_one_section
sparse_early_mem_map_alloc -> sparse_mem_map_populate -> if (vmemmap_populate(start, end, nid))
// sparse vmem 을 사용한다면, 할당한 map 이 아니라 vmemmap 에다가 할당해서 바로 mem_map 을 쓰는구나
bootmem_init -> {sparse_init, zone_sizes_init}
zone_siezs_init -> zone 사이즈 제고, 실제 reg 있는거 를 뻬면 남은거니까 이게 hole
https://elixir.bootlin.com/linux/v4.9.337/source/arch/arm64/Kconfig#L202
일단 기본으로 ZONE_DMA 는 켜있음
4.3 존
존과 노드
노드는 각각 MOVABLE 존을 하나씩 가질 수 있는걸로 보임
movable node 가 켜져있을때 -> 노드가 아예 Movable 만 사용
mirrored_kernelcore -> 미러링이 되어있지 않은 memblock 을 movable 에서 사용. 다른 노드에서 똑같은 물리 페이지를 복사해서 가지고 있고, 변경되면 업데이트 되는걸 말하는 듯함. 그래서 미러링 되지 않은 페이지는 안정적이지 않다고 생각해서 movable 로 사용
required_movablecore -> 비율에 맞춰 movable 사용
'개발 > 코드로 알아보는 ARM 리눅스 커널 TIL' 카테고리의 다른 글
20240928 4.4 버디 시스템 (p309) (0) | 2024.11.16 |
---|---|
20240921 4.3.3 vmemmap 을 사용하는 sparse 메모리 모델 (p277) (1) | 2024.11.16 |
20240831 - sparse init (p269) (0) | 2024.11.16 |
20240817 페이징과 매핑 (p200) & memblock(p221) (0) | 2024.11.16 |
20240627 - ARMv8아키텍처 (p34) (0) | 2024.11.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 면접
- hole-punching
- 에러 위치 찾기
- chrome-extension
- 우리는 vr핏이라고 부릅니다
- set value
- SuffixArray
- 코어 남기기
- red underline
- vrpit
- 클래스 맴버 변수 출력하기
- boost
- Quest2
- C++
- shared_from_this
- RVO
- Visual Studio
- cockroach db
- 카카오
- mysql
- print shared_ptr class member variable
- 봄날에 스케치
- ad skip
- 잘못된 빨간줄
- Obstacle Avoidance
- Reciprocal n-body Collision Avoidance
- it's called a vrpit
- Golang
- 영상 픽셀화 하기
- vr핏
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함