bigsys-gnu / mvcc-os

KhronOS, a scalable operating systems based on sv6 (MIT) with MV-RLU (multi-version concurrency control mechanism)
Other
1 stars 0 forks source link

Survey data structures inside the sv6 or scalefs #25

Closed kjhnet closed 2 years ago

kjhnet commented 3 years ago
kjhnet commented 3 years ago
kjhnet commented 3 years ago
kjhnet commented 3 years ago
bigsys-gnu commented 3 years ago
bigsys-gnu commented 3 years ago
gitrvy2 commented 2 years ago

radix tree 간단 분석결과입니다.

다음은 refcache 관련 분석결과입니다.

Radixtree의 마지막 솔루션인 TLB Shootdown은 저희가 건드릴 수 있는 영역이 아닌것 같습니다.

bigsys-gnu commented 2 years ago

radix tree 간단 분석결과입니다.

  • 현재 구현된 radix tree는 노드별로 스핀락을 할당합니다. 각 노드는 메모리 주소 하나에 대응합니다.
  • vm에서 메모리 맵을 사용할 때는 주소 범위를 지정해서 lock을 획득 및 반환합니다. 이떄 범위내 각 메모리 주소 (노드)의 락을 순차적으로 처리합니다.
  • 구조상으로는 각 노드의 스핀락(bit_spinlock.hh)을 mvrlu로 대체 할 수 있어보이는데 자세한건 해 봐야 알겠습니다..
  • 어떤걸 벤치마크로 사용할 지는 아직 확인을 해봐야 하겠지만, vm에서 활용하는 메모리 영역이 겹치는 경우가 많이 있으면 어느정도 성능 비교는 가능해 보입니다.
  • 그런데 RadixVM은 겹치지 않는 주소범위에서 scalability를 제공하는 연구기 때문에 과연 벤치마크가 성실하게 겹치는 케이스를 많이 발생하도록 했는지는 확인해 봐야합니다 (중요!) ==> RadixVM 논문 사용한 벤치마크 또는 sv6/scalefs 내에 있는 벤치마크를 이용

다음은 refcache 관련 분석결과입니다.

  • 일단 레퍼런스 카운팅을 하는 refcache는 radix tree와는 별개의 부분입니다. (RadixVM의 3가지 솔루션 중 하나)
  • refcache(refcache.hh)도 spinlock를 사용하기 때문에 mvrlu로 대체가 가능한지 검토해 보겠습니다. ==> refcache에서 사용하는 spinlock을 mvrlu로 대체하는 부분이 좀더 간단하거나 성능 향상 폭이 클 수 있으니 살펴봅시다. ==> refcache를 평가할 수 있는 적절한 벤치마크 찾기 in scalefs/sv6

Radixtree의 마지막 솔루션인 TLB Shootdown은 저희가 건드릴 수 있는 영역이 아닌것 같습니다.