insmod 시에 DEFINE_PER_CPU 사용시 alloc fail 이 나는 이유?

trymp의 이미지


linux kernel 의 모듈에서 insmod 시에

내부에 percpu memory 가 필요해서 DEFINE_PER_CPU 를 이용해서

사이즈가 큰 메모리를 잡을때 alloc 이 실패해서 insmod 가 fail 이 나는 경우가 있습니다.

run time 중에 alloc_percpu() 이용해서 할당하면 큰 size 의 메모리 할당도 성공하는데요.

왜 DEFINE_PER_CPU() 를 이용해서 per_cpu memory 를 사용하면 insmod 시 실패나는지 모르겠습니다.

아시는 분 조언해 주시면 감사하겠습니다.

bushi의 이미지

https://kldp.org/comment/638033#comment-638033 인용된 부팅 메시지중 modules 라고 이름붙여진 공간이 module 들이 올라가는 곳입니다. text, data 모두 저곳에 올려집니다.