Pangyoalto

Pangyoalto

[Linux] Slab 메모리 줄이기
Linux

[Linux] Slab 메모리 줄이기

[요약] 1. Slab은 커널 캐시이다. 2. Slab은 SReclaimable과 SUnreclaim으로 나뉜다. 현재 사용하냐, 안하냐 차이다. 3. drop cache를 하면 SReclaimable이 줄어든다. 4. shrink slab을 할 경우 SUnreclaim이 줄어든다. 단, docs에서 shrink slab은 실행 중인 어플리케이션에 영향을 미칠 수 있다고 나와있다. 5. 하지만 SUnreclaim은 커널이 kmalloc 후 release가 안된 것이라 프로세스를 죽인다고
8 min read
[Go] kv 파일 스토리지를 골라보자! (부제: LSM Tree와 B Tree)
Go

[Go] kv 파일 스토리지를 골라보자! (부제: LSM Tree와 B Tree)

[요약] 1. kv storage는 LSM tree로 구현된 것과 B tree로 구현된 것으로 나뉜다 2. LSM tree는 쓰기가 빠르고 B tree는 읽기가 빠르다 3. Go의 KV 파일 스토리지 구현체는 badger, pebble, bbolt가 있다 4. badger와 pebble은 동일 db에 read 프로세스와 write 프로세스가 접근하면 에러가 발생한다. bbolt는 행이 걸린다 이 글에서는 Key-Value
8 min read
[Go] Map 사용시 Read도 RLock을 해야하는 이유
Go

[Go] Map 사용시 Read도 RLock을 해야하는 이유

[요약] * Map에 여러 프로세스가 접근할 때 다른 key에 대해 write을 하더라도 리밸런스로 서로 영향을 미칠 수 있다. * Read시 다른 Key에 write을 하는 프로세스에 영향을 받을 수 있으니 key별로 lock을 걸지 말고 전체 Map에 대해 RLock, WLock을 걸어야 한다. 멀티 프로세스 혹은 여러 고루틴을 이용해 병렬 프로그래밍을 할 때 가장 골치가
5 min read