GHashTable을 대체하려고 만든 SHashTable: 64바이트 키에 맞춘 설계
회사에서 GLib의 GHashTable을 대체하기 위해 해시 테이블을 직접 개발한 적이 있다. 출발점은 성능 경쟁보다 GLib 의존성과 유지보수 부담을 줄이는 것이었다. 기존 호출부는 최대한 유지하면서, 실제로 사용하는 64바이트 키에 맞춘 구현을 만들고자 했다....
supersilo.blog · 17개의 기록
회사에서 GLib의 GHashTable을 대체하기 위해 해시 테이블을 직접 개발한 적이 있다. 출발점은 성능 경쟁보다 GLib 의존성과 유지보수 부담을 줄이는 것이었다. 기존 호출부는 최대한 유지하면서, 실제로 사용하는 64바이트 키에 맞춘 구현을 만들고자 했다....
PC에서 숫자 두 개를 보내면, 작은 보드 안의 프로그램이 두 숫자를 더하고 답을 돌려준다. 이번에 해본 실습이다. 예를 들어 PC에서 4와 3을 보내면 보드가 7을 보낸다. 계산 자체는 간단하다. 이번에 배우고 싶었던 것은 내가 작성한 C 코드가 보드 안에서 실...
펌웨어가 어떻게 실행되는지 기초부터 이해하고 싶어서 DE1-SoC로 실습을 시작했다. 목표는 직접 만든 부트로더를 보드에 올리고, 그 부트로더가 나중에 펌웨어를 받아 실행하도록 만드는 것이다. 최종적으로는 PC에서 간단한 요청을 보내고, 펌웨어가 처리한 결과를 돌...
본 포스팅은 DFTL을 FEMU에 구현하는 것을 목표로 한다. DFTL(Demand-based Flash Translation Layer)는 플래시 메모리 기반 저장장치에서 페이지 단위 주소 변환(페이지-레벨 어드레스 매핑)의 장점을 유지하면서 메모리(DRAM) ...
모니터랩에 입사하고 수습 과제로 Mini-IPS를 개발했다. 악성 HTTP 요청을 정규표현식으로 탐지하고 차단하는 시스템이다. 탐지 엔진은 PCRE2와 Hyperscan을 각각 붙여 성능을 비교했다. 1차에서는 libpcap으로 미러링 트래픽을 받아 처리했다. 동...
Linux의 일반적인 장치 I/O는 인터럽트 기반 알림을 활용한다. 고성능 시스템 소프트웨어는 종종 인터럽트 대신 폴링이나 하이브리드 구조를 선택한다. 주된 이유는 처리 비용이다. 초고속 I/O 환경에서는 인터럽트 처리 자체의 오버헤드와 CPU를 반복적으로 깨우는...
TPROXY(Transparent Proxy)는 Linux에서 투명 프록시를 구성하기 위한 기능이다. 패킷의 목적지 헤더를 바꾸지 않고 트래픽을 로컬 소켓으로 전달할 수 있다. 이 글에서는 NAT/REDIRECT 방식과의 차이, 구성 요소, 사용자 공간 프록시까지...
대규모 모델에서는 GPU 메모리(VRAM)가 학습과 추론의 제약이 된다. 오프로딩은 CPU 메모리와 스토리지를 활용해 이 제약을 완화하지만, 데이터 이동과 추가 연산 비용을 함께 고려해야 한다. 이번 글에서는 속도와 메모리 용량 사이의 절충를 다루는 논문들을 정리...
LLM 서빙에서는 GPU 연산 성능뿐 아니라 메모리 용량과 대역폭이 처리량을 제한한다. 특히 요청마다 커지는 KV 캐시를 어떻게 할당하고 공유하는지가 동시 처리 가능한 요청 수에 영향을 준다. 이 글은 PagedAttention 논문에서 제안한 vLLM의 설계와 ...
DockerSSD DockerSSD는 카이스트에서 2022년에 발표한 인스토리지 프로세싱 연구다. 인스토리지 프로세싱은 스토리지 내에서 데이터를 처리하는 모델로 대규모 데이터셋 처리할 때 에너지 효율적인 해법으로 알려졌다. 다만 저장장치의 제한된 연산 자원과 실행...
컴퓨트와 스토리지 자원을 분리하면 CPU와 저장 용량을 각각의 수요에 맞춰 확장할 수 있다. 대신 로컬 I/O가 네트워크 I/O로 바뀌면서 새로운 비용이 생긴다. 이 글에서는 NVMe-oF/TCP를 통해 자원 활용의 이점과 데이터 이동 비용을 함께 살펴본다. 컴퓨...
Application-Managed Flash는 FAST 2016에 발표된 연구다. 파일시스템과 SSD가 각각 수행하는 로그 구조 관리의 중복을 줄이는 데 초점을 둔다. 오픈채널 SSD(OCSSD), ZNS와 마찬가지로 호스트가 플래시 특성을 고려한다는 관점에서 ...
서론 LSM 트리는 키-값 저장소에 널리 사용되는 자료구조다. 쓰기를 모아 순차적으로 저장하는 방식은 효율적이지만, 여러 레벨을 검색하고 병합하는 과정에서 읽기·쓰기·공간 증폭이 발생할 수 있다. GHStore는 최신 값이 위치한 레벨을 기록하는 전역 해시맵으로 ...
LMPTs: Eliminating Storage Bottlenecks 이더리움 클라이언트에서는 상태 저장소의 I/O가 트랜잭션 실행을 지연시킬 수 있다. LMPTs는 이 스토리지 병목을 줄이기 위해 상태 트리를 계층화한 연구다. MPT(머클 패트리샤 트리)는 상태...
인스토리지 컴퓨팅은 데이터를 호스트로 옮기기보다 SSD 내부에서 처리해 I/O 비용을 줄이는 방식이다. 그러나 사용자 프로그램이 SSD 내부에서 실행되면 다른 사용자의 데이터와 플래시 관리 기능을 보호해야 한다. IceClave는 이를 위한 경량 신뢰 실행 환경(...
Hashcash와 작업 증명 Hashcash는 이메일 스팸과 서비스 거부 공격의 비용을 높이기 위해 제안된 작업 증명 방식이다. 발신자는 조건을 만족하는 해시를 찾는 계산을 수행하고, 수신자는 결과를 비교적 적은 비용으로 검증한다. 계산 비용이 스팸을 불가능하게 ...
졸업을 앞두고 캡스톤 디자인 수업에서 만든 얼굴 인식 시스템을 보완했다. 처음에는 웹 앱과 머신러닝으로 사용자의 얼굴을 구분하고 버스 요금을 결제하는 시스템을 목표로 했다. 개발 인력이 한 명이었던 만큼 전체 기능을 완성하기는 어려웠고, 최종 구현 범위는 얼굴 검...