본문 바로가기

slab allocator

[Linux Kernel] slab_common 분석 이 글은 독자가 슬랩에 대한 약간의 이해가 있다고 가정한다. 슬랩을 왜 쓰는지, cache와 slab이 어떤 관계가 있는지, kmalloc/kfree가 무엇인지 정도는 알고 있어야 한다. 아래 두 글을 먼저 읽는 것도 이해에 도움이 될것같다. [Linux Kernel] SL[AUO]B: Kernel memory allocator design and philosophy 내가 SLAB/SLUB을 잘못 이해했는지 Christoph Lameter 아저씨가 발표한 영상을 한 번 보라고 추천해주셨다. 이 글은 SL[AUO]B: Kernel memory allocator design and philosophy를 정리하고 내 의견을 추가로 적은.. hyeyoo.com The Slab Allocator: An Objec.. 더보기
[Linux Kernel] SL[AUO]B: Kernel memory allocator design and philosophy 내가 SLAB/SLUB을 잘못 이해했는지 Christoph Lameter 아저씨가 발표한 영상을 한 번 보라고 추천해주셨다. 이 글은 SL[AUO]B: Kernel memory allocator design and philosophy를 정리하고 내 의견을 추가로 적은 것이다. PDF는 여기에 있다. 대부분의 커널 개발자는 (당연히도) 슬랩 할당자와 상호작용을 하게 된다. 슬랩 할당자란 무엇인가?! 기본적으로 메모리 할당은 PAGE_SIZE (4K)로 이루어진다. (그리고 느림) 하지만 작은 크기의 메모리에 대해서는 페이지를 쪼개서 sizeof(struct bio), sizeof(struct sg) 등등 작은 단위로 할당할 수 있고 그게 더 빠르다. 대부분의 서브시스템에서 메모리 할당을 해야하므로 슬랩 할.. 더보기
The Slab Allocator: An Object-Caching Kernel Memory Allocator 이 글은 1994년 Jeff Bonwick (Sun Microsystems)의 The Slab Allocator: An Object-Caching Kernel Memory Allocator를 정리한 것이다. 그나저나 이 논문 우리 큰누나랑 동갑이다. 논문이 나보다 누나잖아..? 1. Introduction 슬랩 할당자는 1994년 Jeff Bonwick이 SunOS 5.4에 도입한 메모리 할당자이다. 이 메모리 할당자는 객체를 할당하고 해제할 때, 메모리를 할당하는 비용보다 생성/소멸시의 비용이 더 높으므로, 이런 생성/소멸 비용을 줄이고자 만들어졌다. 그리고 컬러링(colouring)을 통해 하드웨어 캐시를 최대한 활용하고자 한다. 또한 이 할당자는 통계와 디버깅 기능으로 시스템을 모니터링 하거나 시스.. 더보기