CatBench v0.3: Postgres 벡터 검색 앱에 성능 모니터링 기능 추가

2025-05-30

CatBench는 2만 5천 장의 애완동물 사진을 사용하는 Postgres 및 PgVector 기반 데모 애플리케이션으로, 이제 인스턴스 전체 처리량과 쿼리 지연 시간 차트를 제공합니다. 이전에는 추천 엔진을 탐색하고, 고양이 사진과 유사한 고양이의 구매를 기반으로 한 제품 추천을 보고, 백엔드 SQL 쿼리 메트릭을 확인할 수 있었습니다. v0.3에서는 Postgres 인스턴스 전체 활동과 SQL 지연 시간을 표시하는 모니터링 섹션이 추가되었습니다. 향후 계획에는 코드 정리, 사진 데이터 세트를 900만 장으로 확장, 사기 탐지를 위한 재현율 모니터링 추가, 다른 데이터베이스 지원 등이 포함됩니다.

더 보기
개발

pg_test_fsync: 데이터베이스를 위한 디스크 쓰기 성능 벤치마킹

2025-05-28

이 글에서는 디스크 또는 클라우드 스토리지의 쓰기 성능을 빠르게 벤치마킹하는 도구인 `pg_test_fsync`를 소개합니다. 이는 데이터베이스 WAL 로그 및 기타 낮은 대기 시간 쓰기 작업에 특히 유용합니다. 저자는 소비자용 Samsung 990 Pro SSD와 엔터프라이즈급 Micron 7400 SSD를 테스트하여 컨트롤러 DRAM 캐시와 전원 손실 방지 기능으로 인해 엔터프라이즈 SSD의 동기 쓰기 속도가 훨씬 빠르다는 것을 밝혔습니다. `fdatasync`는 `fsync` 또는 `O_SYNC`보다 빠르지만, `fdatasync`조차도 단일 8KB 쓰기에 1.6밀리초가 걸립니다. 이 글에서는 여러 번의 소규모 쓰기는 성능을 저하시키므로, 쓰기 작업을 배치 처리할 것을 권장합니다.

더 보기
개발

lsds: Linux 블록 장치 설정을 한 곳에서 관리

2025-05-09

Linux에서 디스크와 I/O를 관리할 때 lsblk, lsscsi, nvme list와 같은 여러 명령어를 실행하고 그 출력 결과를 수동으로 연결하는 경우가 많습니다. 이를 간소화하기 위해 `lsds`라는 Python 프로그램이 만들어졌습니다. 이 프로그램은 `/sys/class/blocks/...` 디렉토리에서 정보를 직접 읽어 중요한 디스크 정보를 하나의 출력으로 통합하여 표시합니다. 여기에는 장치 이름, 크기, 유형, 스케줄러, 회전 플래그, 모델, 큐 깊이, 요청 수, 쓰기 캐시 설정 등이 포함됩니다. `lsds`는 사용자가 표시할 열을 지정하고 정보 소스를 추적하는 자세한 모드를 제공하는 등 매우 사용자 지정이 가능합니다. 이 도구는 Linux 디스크 관리의 복잡성을 크게 줄여줍니다.

더 보기

단일 ThreadRipper 워크스테이션에서 1100만 IOPS 및 66 GiB/s IO 달성

2025-05-06

이 기사에서는 AMD ThreadRipper Pro 프로세서와 10개의 PCIe 4.0 SSD가 장착된 워크스테이션을 구성하여 4kB 랜덤 읽기에서 최대 1100만 IOPS, 더 큰 IO 처리량에서 66 GiB/s를 달성하는 방법을 설명합니다. 저자는 RAM 액세스 및 CPU 병목 현상과 같은 문제를 해결하고 Linux 블록 I/O 내부 메커니즘과 최신 하드웨어의 상호 작용을 자세히 살펴봅니다. 기사에서는 하드웨어 선택, I/O 구성(직접 I/O 및 I/O 스케줄러), 다중 디스크 테스트, BIOS 설정 등을 다루며 궁극적으로 놀라운 성능을 달성합니다.

더 보기
하드웨어

eBPF 함정: Linux 커널 6.9+의 FRED

2025-03-01

Linux 커널 6.9+는 x86_64 아키텍처에서 CONFIG_X86_FRED 구성 옵션을 도입하여 작업의 커널 스택 하단에 16바이트의 패딩을 추가합니다. 이로 인해 커널 스택과 pt_regs 구조체에 직접 액세스하는 eBPF 프로그램이 손상되어 쓰레기 데이터를 반환합니다. 저자는 커널 6.11로 업그레이드한 후 자신의 eBPF 도구인 xcapture-next에서 이 문제를 발견했습니다. 분석 결과 FRED에 의한 스택 오프셋이 원인임을 알아냈습니다. 스택 주소 계산을 조정하기 위한 동적 FRED 감지 메커니즘이 제시되어 문제를 해결합니다. 이 문서는 특히 원시 커널 스택 조작을 수행하는 eBPF 개발자에게 매우 중요합니다.

더 보기
개발

TracepointArgs: Linux 커널 트레이스포인트 탐구

2025-02-04

Linux 커널 소스 코드에서 트레이스포인트 메타데이터와 구조체 레이아웃을 찾느라 지치셨나요? 새로운 명령줄 도구인 tracepointargs를 소개합니다. 이 도구를 사용하면 사용 가능한 모든 Linux 커널 트레이스포인트, 해당 인수, 데이터 형식 및 관련 구조체를 나열할 수 있습니다. 커널 구조체 레이아웃도 분석하므로 소스 코드를 뒤지지 않고도 트레이스포인트 세부 정보를 이해할 수 있습니다. bpftool과 함께 vmlinux.h 파일을 생성하면 구조체 내부를 쉽게 검사할 수 있으며, 중첩 구조체도 재귀적으로 확장할 수 있습니다. eBPF 개발자와 커널 탐색가에게 필수적인 도구입니다!

더 보기