본문 바로가기

논문 리뷰

(12)
Scalable and Practical Locking with Shuffling Scalable and Practical Locking with Shuffling Notion에서 보기 Abstract shuffling 미리 수립된 정책에 따라 lock을 얻으려고 기다리는 스레드의 큐를 재정렬하는 것이 핵심 아이디어이다. critical path에서 벗어난다. 어떻게 NUMA-awareness / NUMA 구조를 인지하여 효율적인 전략을 세우고 보조적인 자료구조를 사용하는지를 보여준다. 1. Introduction lock 알고리즘은 멀티코어 머신에서 어플리케이션의 scalcbility를 결정한다. HW 발전에 따른 lock 설계 변천 MCS : 동시에 락을 얻으려고 하는 스레드의 개수의 증가를 유발하는 cache-line traffic을 설명하기 위해 제안되었다. Cohort loc..
How to Deal with Lock Holder Preemption How to Deal with Lock Holder Preemption notion에서 보기 1. Introduction spinlocks 운영체제 커널에서 많이 사용되는 synchronization 기법 스레드가 계속해서 lock을 모니터링하며 lock을 얻기 위해 대기한다. spinlock for better alternatives interrupt handler에서 blocking이 안되는 경우 context switching 이 시간을 많이 소요하는 경우**해당 프로세스가 CS를 아주 잠깐 사용하여 context switching이 실제 CS 사용 시간보다 길면 비효율적이기 때문에 그 잠깐 동안 spin을 하면서 대기 한다. → 기다리는 프로세스를 sleep 시키지 않고 spinning하면서 대기..
Compact NUMA-aware Locks Compact NUMA-aware Locks notion에서 보기 1. Introduction Lock 멀티 프로세스 시스템에서 공유 데이터에 대한 exclusive 접근을 위해 사용된다. Modern architecture 노드(소켓)의 수가 증가 각 노드에 로컬 메모리 + 로컬 캐시 + 멀티 프로세싱 units(cores) 로컬메모리, 로컬캐시에 대한 접근 속도 > 다른 노드에 있는 리모트메모리, 리모트캐시 NUMA-aware locks 같은 소켓 내에 락 소유권을 유지하려는 기법 리모트 캐시 miss와 miss로 인한 노드간 이동을 감소시킨다. 공유 데이터가 lock holder가 실행 중인 소켓으로 캐시된다. NUMA-oblivious locks는 single memory word 만으로 구현되는..
Prudent Memory Reclamation in Procrastination-Based Synchronization Prudent Memory Reclamation in Procrastination-Based Synchronization 위 논문을 읽으면서 공부한 자료입니다. Notion에서 보기 Abstraction RCU (Read-Copy-Update) 기본 요소 i) Reader보호 받아야 하는 데이터 (protected rcu data)에 접근할 때 항상 CS영역 내에서만 접근해야 한다.non-preemtable RCU 커널을 사용하는 경우 read_rcu_lock() 내부에서 preemption을 금지하는 코드만 적용되고, preemptable RCU 커널을 사용하는 경우 read_rcu_lock()내부에서 로컬 카운터를 증가시키고 read_rcu_unlock()내부에서 로컬 카운터를 감소시킨다. read_..
Making Huge Pages Actually Useful : Illuminator Making Huge Pages Actually Useful : Illuminator 위 논문을 읽고 정리한 내용입니다. Notion에서 보기 Abstract huge page로 virtual-to-physical address translation overhead를 완화할 수 있다. 그러나 memory fragmentation 문제로 contiguous 한 mapping이 어려워 huge page를 실제로는 잘 사용하지 못했다. huge page 사용시** spike : 갑작스러운 발생 커널과 같은 unmovable page 처리 문제로 불필요한 memory management 작업이 수행되어 높은 CPU utilization이나 latency spike가 발생한다. 본 논문에서는 memory mana..
Perforated Page: Supporting Fragmented Memory Allocation for Large Pages Perforated Page: Supporting Fragmented Memory Allocation for Large Pages 위 논문을 읽고 정리한 내용입니다. Notion에서 보기 Abstract Large Page (=huge page) 큰 연속적인 메모리 영역을 사용하는 어플리케이션의 address translation 효율성을 위해 large page 사용이 발전해왔다. address translation 참고자료 virtual memory의 모든 프로세스는 각자의 virtual address space를 가지며 필요시 메인 메모리에 load시켜 일종의 cache처럼 사용하고, 이를 위해서 MMU에 있는 page table을 사용한다. virtual page는 physical memory 어..
HawkEye: Efficient Fine-grained OS Support for Huge Pages HawkEye: Efficient Fine-grained OS Support for Huge Pages 위 논문을 읽고 정리한 내용입니다. Notion에서 보기 Abstract 운영 체제는 주소 변환 오버헤드를 감소시키는데 효율적인 huge page 관리기법이 필요하다. recent work : Ingens https://www.notion.so/Coordinated-and-Efficient-Huge-Page-Management-with-Ingens-a04ce99fe56e42cbb4b12b8dba3ad6a0#f3998d04c03b48e3bee0b66283c3cdfe HawkEye/Linux : 새로운 huge page 관리 기법 performance, page fault latency, memory bl..
Redundant Memory Mappings for Fast Access to Large Memories Redundant Memory Mappings for Fast Access to Large Memories 위 논문을 읽고 정리한 내용입니다. Notion에서 보기 Abstract page based virtual memory memory utilization 향상 TLB miss로 인한 page table walks로 성능 저하TLB miss 발생→ Ln page table miss*** n = 1, 2 → Ln page table entry 내부의 page 가 Ln TLB로 변환하고 물리주소로 변경됨 → Ln page table access ** page table walk : TLB miss를 처리하는 과정 virtual memory의 오버헤드를 줄이기 위해 **Redundant Memory Map..