Ubuntu unattended-upgrades로 보안 패치 자동 적용하기

보안 패치는 CVE가 뜬 순간이 아니라 담당자가 apt를 돌리는 순간에야 적용된다. 서버가 몇 대만 넘어가도 관리가 안 되고, 휴가나 주말 사이에 터진 취약점은 며칠씩 방치되기 쉽다. Ubuntu는 매일 자동으로 보안…

Continue ReadingUbuntu unattended-upgrades로 보안 패치 자동 적용하기

QEMU/KVM에서 virtio-net으로 네트워크 성능 끌어올리기

QEMU/KVM 게스트의 기본 에뮬레이트 NIC(e1000, rtl8139 등)은 물리 NIC 레지스터를 소프트웨어로 그대로 흉내 내, 패킷 하나마다 MMIO/PIO 접근이 VM Exit로 호스트에 트랩된다. 이 트랩 비용 때문에 처리량이 물리 NIC 대비…

Continue ReadingQEMU/KVM에서 virtio-net으로 네트워크 성능 끌어올리기

Python mmap으로 파일을 메모리처럼 다루기

파일 크기가 물리 메모리를 넘어서면 open().read()로 통째로 읽는 순간 프로세스 메모리가 그만큼 늘어나 OOM killer에 걸릴 수 있다. Python 표준 라이브러리 mmap은 파일을 프로세스의 가상 주소 공간에 매핑해서, 실제로 접근한…

Continue ReadingPython mmap으로 파일을 메모리처럼 다루기

ARM SVE(Scalable Vector Extension)로 가변 길이 벡터 연산 다루기

NEON은 레지스터 폭이 128비트로 고정돼 있어 배열 길이가 4의 배수가 아니면 스칼라 tail 루프를 따로 짜야 하고, 128비트부터 2048비트까지 벡터 폭이 다양한 ARM 생태계에서도 컴파일 타임에 고정된 128비트씩만 처리한다 —…

Continue ReadingARM SVE(Scalable Vector Extension)로 가변 길이 벡터 연산 다루기

kgdb로 원격 시스템 라이브 디버깅하기

커널이 패닉 없이 그냥 멈추거나, 특정 syscall 경로에서만 간헐적으로 이상 동작을 보이는 경우 printk만으로는 원인을 좁히기 어렵다. dmesg에 로그를 더 찍고 재현하고 다시 빌드하는 사이클은 타이밍에 민감한 버그일수록 무력해진다. 이럴…

Continue Readingkgdb로 원격 시스템 라이브 디버깅하기

라즈베리파이에서 SPI 통신으로 센서/디스플레이 다루기

라즈베리파이에서 ADC나 LED 매트릭스처럼 빠른 응답과 큰 데이터 전송량이 필요한 주변장치를 다룰 때 I2C(배선 2개, 수백 kHz, 슬레이브 주소 기반)는 속도와 주소 충돌 면에서 답답하다. SPI(Serial Peripheral Interface)는 MOSI/MISO를 따로…

Continue Reading라즈베리파이에서 SPI 통신으로 센서/디스플레이 다루기

리눅스 커널 futex로 유저스페이스 락 직접 구현하기

pthread_mutex 하나로도 충분히 락을 걸 수 있는데 왜 futex를 직접 만져야 할까. 사실 glibc의 pthread_mutex_lock 자체가 내부적으로 futex(2) syscall 위에 구현되어 있다 — 경쟁이 없을 때는 유저스페이스의 atomic CAS(compare-and-swap) 한…

Continue Reading리눅스 커널 futex로 유저스페이스 락 직접 구현하기

tmux 세션 관리와 스크립팅으로 원격 작업 환경 구성하기

SSH 연결이 끊기면(노트북을 덮거나, 와이파이 끊김, VPN 타임아웃) 터미널에 붙어 있던 셸과 프로세스가 통째로 죽는다. nohup/disown으로 프로세스는 살릴 수 있어도 다시 접속해서 출력을 보거나 개입할 방법은 없다. tmux(terminal multiplexer)는 터미널…

Continue Readingtmux 세션 관리와 스크립팅으로 원격 작업 환경 구성하기

라즈베리파이에서 I2C 센서 데이터 읽기 — python-smbus2 실전

센서마다 GPIO 핀을 하나씩 배정하는 방식은 핀 개수 제한과 배선 복잡도 때문에 금방 한계에 부딪힌다. I2C는 SDA/SCL 두 핀만으로 여러 센서를 동시에 연결하는 버스 프로토콜이고, BME280 같은 저가형 온습도/기압 센서는…

Continue Reading라즈베리파이에서 I2C 센서 데이터 읽기 — python-smbus2 실전