- [[Kubernetes Community Day Korea]]
잡다한거
coarse-grained vs fine-grained
write-ahead logging(로그 선행 기록)
ACL(access control list)
__read_mostly 매크로 (kernel)
likely && unlikely 매크로 (kernel)
#define likely(x) __builtin_expect((x), 1)
#define unlikely(x) __builtin_expect((x), 0)
- likely()는 true가 될 확률이 높은 조건문에서 성능을 높이고자 사용한다.
ceph
- 참고 : https://blurblah.net/1298
- 분산 object store이자 file system, 분산 클러스터 위에서 storage 인터페이스를 제공
- 찾아보게 된 계기 : linux kernel mail(linux-fsdevel)로부터 처음 보는 파일 시스템이 있길레
do{} while(0)
asmlinkage 매크로
- 참고 : http://egloos.zum.com/studyfoss/v/4951809
- 어셈블리 코드에서 직접 호출할 수 있다는 의미
- 정의 (include/linux/linkage.h)
#include <linux/config.h>
#include <asm/linkage.h>
#ifdef __cplusplus
#define CPP_ASMLINKAGE exter "C"
#else
#define CPP_ASMLINKAGE
#endif
#ifndef asmlinkage
#define asmlinkage CPP_ASMLINKAGE
#endif
- 함수부 앞에 붙이게 된다면 함수 인자 전달을 모두 스택을 통해서 전달하게된다.
latent_entropy 매크로
- 참고 : https://lwn.net/Articles/689145/
- 참고 내용 대충 번역
latent_entropy 라는 gcc plugin 을 소개한다.
이 플러그인을 사용하면 부팅 과정 중과 부팅 이후, 암호화 키를 생성하는 과정에서 너무 entropy 가 낮아지는 문제를 완화한다. => 부팅할 때 무작위성과 관련하여 문제가 있어서 이를 해결하는 plugin 이라는 뜻인듯?
이 플러그인은 함수 앞에 __latent_entropy 라는 속성을 적어주면 랜덤한 값을 전역 변수에 섞어준다. (~~~) 한국어로 번역하기 힘든데, 이렇게 전역변수를 건들여주면 전체적으로 무작위성이 증가해서 커널의 엔트로피가 커진다.(무작위성을 저격해서 취약점을 공격하기 어려워진다.) 라는 뜻인듯
- 보안 패치와 관련된 플러그인을 사용하겠다는 것이고, 커널의 무작위성을 높여주는 속성이다. 무작위성과 관련된 취약점이 많다고 생각해서 추가한듯.
__sched 키워드
asmlinkage void __sched schedule(void);
#define __sched __attribute__((__section__(".sched.text")))
__attribute__
는 컴파일러에게 옵션을 주기 위함으로 cl 컴파일러의 #pragma
와 유사하다- 정의의 내용은 메모리 공간의 어디 부분에 이 함수를 넣으라고 명시하는 것이며, schedule 함수들을 한곳에 모아
in_sched_functions()
같은 함수를 만들기 위함이다. (wchan 은 프로세스가 실행하고 있는 커널 루틴) - 현재 프로세스가 실행하는 메모리 공간을 확인하는 함수가 스케쥴링 중일 때에도 올바른 주소를 반환하는 건, 이 함수를 사용해서이며, 이 함수에서 스케쥴링 상태인지를 확인하는 건 실행 주소가 sched 섹션인지를 확인하는 것이다.
- 이렇게 하면 스케쥴링 함수들을 모두 한 메모리 영역에 몰아넣고 PC가 그 안에 있는지 체크하면 된다.
- __sched 키워드만 이런식으로 메모리 공간을 활용하는 것이 아닌데, 이는 여기에 있는 참고 1을 확인하면 된다.
CRDT
CQRS