Pandas sampling(샘플링)
수백만 행짜리 데이터프레임을 통째로 훑어보거나 모델에 넣기 전에, 일부만 빠르게 뽑아 분포를 확인하고 싶을 때가 있다. df.head()는 앞부분만 보여주기 때문에 데이터가 정렬돼 있으면 편향된 인상을 준다. 반대로 그룹별 비율은 유지한…
수백만 행짜리 데이터프레임을 통째로 훑어보거나 모델에 넣기 전에, 일부만 빠르게 뽑아 분포를 확인하고 싶을 때가 있다. df.head()는 앞부분만 보여주기 때문에 데이터가 정렬돼 있으면 편향된 인상을 준다. 반대로 그룹별 비율은 유지한…
dm-vdo를 도입할 때 흔히 하는 실수가 압축률과 중복제거율만 보고 "물리 디스크의 몇 배를 담을 수 있는가"로 용량 산정을 끝내는 것이다. 하지만 VDO는 논리-물리 블록 매핑(block map), 슬랩별 참조 카운터, 복구…
메모리가 부족한 서버나 컨테이너 환경에서는 스왑을 켜는 순간 디스크 I/O 지연이 그대로 애플리케이션 응답 속도로 이어진다. 반대로 스토리지 비용을 아끼려고 압축을 걸고 싶어도, 파일시스템 레벨 압축(Btrfs, ZFS 등)은 해당 파일시스템을…
F2FS와 Btrfs는 둘 다 Linux 커널에 포함된 파일시스템이면서 투명 압축(transparent compression)을 지원한다는 공통점이 있다. 하지만 압축을 구현한 방식과 실제로 얻을 수 있는 효과는 두 파일시스템의 근본적인 설계 철학 차이 —…
커널 함수 호출이나 스케줄링 이벤트가 실제로 어떤 순서로 일어나는지 확인하고 싶을 때, printk를 여기저기 넣고 재빌드하는 건 비효율적이다. ftrace(Function Tracer)는 커널을 재빌드하지 않고도 함수 호출과 이벤트를 추적할 수 있게 해주는…
데이터를 받으면 가장 먼저 하게 되는 작업이 값의 분포를 파악하는 것이다. Pandas는 평균을 구하는 mean(), 고유값을 뽑는 unique(), 값별 개수를 세는 value_counts() 같은 통계 함수를 기본으로 제공한다. 이 글에서는 예제…
표 형태의 데이터를 다룰 때 파이썬에서 가장 많이 쓰는 게 Pandas DataFrame이다. DataFrame은 크게 세 요소로 이뤄진다 — 행을 식별하는 index, 열을 식별하는 columns, 그리고 실제 값들인 data. 이 글에서는…
다른 언어를 다뤄본 사람이라도 Python(파이썬) 연산자에서 몇 군데는 헷갈릴 수 있다. 대표적으로 /와 //의 차이, ==와 is의 차이가 그렇다. 이 글에서는 파이썬의 연산자 종류를 실제 코드 실행 결과와 함께 정리한다.…
디스크 I/O 지연이 의심되는데 iostat이나 top 같은 도구로는 정확히 어느 단계(큐잉, 병합, 드라이버 전달, 디바이스 처리)에서 시간이 걸리는지 알기 어려울 때가 있다. blktrace는 커널 블록 계층(Block Layer)의 트레이스포인트를 이용해 이…
리눅스 커널에는 파일시스템이 많지만, 그중 데이터를 투명하게 압축(transparent compression)해서 저장 공간을 아껴주는 것은 일부에 불과하다. 가장 많이 쓰이는 ext4나 XFS는 압축 기능 자체가 없고, Btrfs와 F2FS는 쓰기 가능한(writable) 파일시스템이면서 압축을…