위키득계정 ↗

문서 둘러보기

기술↗

Pydantic

Pydantic은 Python 형식 힌트로 자료 검증과 직렬화 규칙을 정의하는 라이브러리다. 모델에 맞춰 외부 자료를 확인하고 필요한 변환을 수행하며 JSON Schema 생성과 사용자 정의 검증을 지원한다.

기술↗

WASI

WASI는 WebAssembly 프로그램이 호스트 환경과 상호 작용하기 위한 API 집합이다. 이식성과 모듈성 및 런타임 독립성을 지향하며 접근 권한에 기반한 인터페이스로 프로그램의 외부 기능 사용을 구성한다.

기술↗

WebAssembly 컴포넌트 모델

WebAssembly 컴포넌트 모델은 인터페이스로 기능을 연결하는 WebAssembly 구성 체계다. 컴포넌트가 가져오고 내보내는 형식과 함수를 기술하고 서로의 요구를 만족하는 모듈과 컴포넌트를 조합한다.

기술↗

Jco

Jco는 JavaScript 환경에서 WebAssembly 컴포넌트를 만들고 변환하며 실행하는 도구 모음이다. 컴포넌트를 ES 모듈로 변환하고 WIT 정의에서 프로젝트 구성을 생성하며 명령행과 라이브러리로 사용할 수 있다.

기술↗

Spin 웹 프레임워크

Spin은 WebAssembly로 클라우드 마이크로서비스를 만들고 실행하는 프레임워크다. 컴포넌트 모델과 Wasmtime을 활용하며 명령행 도구로 응용 생성과 빌드 및 배포 작업을 연결한다.

기술↗

AssemblyScript

AssemblyScript는 TypeScript와 비슷한 문법으로 WebAssembly 프로그램을 작성하는 언어이자 컴파일러다. WebAssembly의 기능에 맞춰 설계하며 Binaryen을 이용해 모듈을 생성한다.

기술↗

Wasm Tools

Wasm Tools는 WebAssembly 모듈과 컴포넌트를 변환하고 검사하는 명령행 도구 및 Rust 라이브러리 모음이다. 형식 변환과 유효성 검사 외에 시험 입력 생성, 축소, 메타데이터 및 컴포넌트 처리를 제공한다.

기술↗

Wasm Pack

Wasm Pack은 Rust에서 만든 WebAssembly를 JavaScript 패키지로 빌드하고 시험하며 배포하는 작업 도구다. 브라우저와 Node.js에서 사용할 패키지를 생성해 npm 등의 기존 개발 흐름과 연결한다.

기술↗

Wasm Bindgen

Wasm Bindgen은 WebAssembly 모듈과 JavaScript 사이의 상호 작용을 위한 바인딩 생성 도구다. Rust에서 JavaScript 기능을 가져오고 Rust 기능을 JavaScript에 내보내는 연결 코드를 만든다.

기술↗

Emscripten

Emscripten은 C와 C++ 코드를 WebAssembly로 컴파일하는 도구 체계다. LLVM과 Binaryen을 사용하며 브라우저와 Node.js 및 WebAssembly 런타임에서 실행할 출력을 생성한다.

기술↗

WABT

WABT는 WebAssembly Binary Toolkit의 약칭으로, WebAssembly 파일의 변환과 검사 및 해석 실행을 위한 도구 모음이다. 텍스트와 바이너리 형식을 오가고 파일 구조와 통계를 확인하는 기능을 제공한다.

기술↗

Binaryen

Binaryen은 WebAssembly 컴파일과 최적화를 위한 C++ 라이브러리이자 도구 모음이다. 중간 표현을 통해 코드를 변환하고 wasm-opt 등으로 WebAssembly의 크기와 실행에 관련된 최적화를 적용한다.

기술↗

Cranelift

Cranelift는 대상에 독립적인 중간 표현을 실행 가능한 기계 코드로 변환하는 코드 생성기다. 여러 프로세서 아키텍처에 대응하며 WebAssembly 런타임과 다른 언어의 컴파일러 백엔드에 활용할 수 있다.

기술↗

WAMR

WAMR은 WebAssembly Micro Runtime의 약칭으로, 임베디드와 사물인터넷 및 서버 환경 등에 맞춰 구성하는 독립 WebAssembly 런타임이다. 해석 실행과 사전 컴파일 및 실행 중 컴파일 방식을 제공한다.

기술↗

WasmEdge

WasmEdge는 WebAssembly 프로그램을 독립적으로 실행하거나 호스트 응용에 포함하는 런타임이다. 운영체제 자원과 메모리 공간을 구분하는 실행 환경을 제공하며 네트워크와 데이터베이스 및 AI 연산을 위한 확장 기능을 연결한다.

기술↗

Wasmer

Wasmer는 WebAssembly 기반으로 프로그램을 실행하고 응용에 실행 환경을 포함하는 런타임이다. 명령행 도구와 SDK를 제공하며 파일과 네트워크 및 환경 접근을 구성해 샌드박스에서 프로그램을 실행한다.

기술↗

Wasmtime

Wasmtime은 WebAssembly를 독립적으로 실행하거나 다른 응용에 포함할 수 있는 런타임이다. Cranelift로 기계 코드를 생성하고 WASI를 통해 호스트 환경과 상호 작용하며 실행 자원의 설정을 제공한다.

기술↗

Rustup

Rustup은 Rust 도구 모음을 설치하고 여러 버전을 관리하는 도구다. 안정판과 베타 및 야간판을 전환하고 갱신할 수 있으며 보관된 버전과 다른 호스트용 도구 모음 및 로컬 빌드도 관리한다.

기술↗

Rust Analyzer

Rust Analyzer는 편집기에 Rust 개발 기능을 제공하는 언어 서버다. 정의와 참조 탐색, 코드 완성과 리팩터링을 지원하며 언어 서버 프로토콜을 사용하는 여러 편집기와 연결할 수 있다.

기술↗

Rustfmt

Rustfmt는 Rust 코드를 스타일 지침에 맞춰 정리하는 도구다. 파일이나 Cargo 프로젝트의 형식을 바꾸고 검사 모드에서는 파일을 수정하지 않고 형식 차이를 확인하며 설정 파일로 동작을 조정한다.

기술↗

Clippy

Clippy는 Rust 코드의 흔한 실수와 개선 가능한 표현을 찾아내는 린트 도구다. 정확성과 의심스러운 코드 및 스타일과 복잡도와 성능 등의 범주로 규칙을 나누고 검사 수준을 조정할 수 있다.

기술↗

Cargo Auditable

Cargo Auditable은 Rust 실행 파일에 빌드 의존성 정보를 포함하는 도구다. 크레이트의 이름과 버전을 담은 의존성 트리를 바이너리에 기록해 배포된 파일에서도 알려진 취약점 검사를 수행하도록 돕는다.

기술↗

Cargo Vet

Cargo Vet은 Rust 프로젝트의 외부 의존성이 신뢰하는 주체의 검토를 거쳤는지 확인하는 도구다. 의존성과 검토 기록을 대조하고 빠진 부분의 검토와 기록을 돕는다.

기술↗

Cargo Audit

Cargo Audit은 Rust 프로젝트의 의존성을 RustSec 보안 공지와 대조하는 도구다. 잠금 파일에 기록된 크레이트를 검사하고, 바이너리에서도 포함된 의존성 정보를 바탕으로 알려진 취약점을 확인할 수 있다.

기술↗

Cargo Deny

Cargo Deny는 Rust 프로젝트의 의존성을 정책에 따라 검사하는 도구다. 라이선스 조건과 허용 또는 금지한 크레이트, 알려진 보안 공지 및 의존성의 출처를 나누어 확인한다.

기술↗

Insta 스냅샷 테스트

Insta는 Rust에서 결과 값을 기준 스냅샷과 비교하는 테스트 라이브러리다. 복잡하거나 자주 바뀌는 값을 비교하고 변경 내용을 검토하는 도구를 제공하며 별도 파일과 인라인 스냅샷을 지원한다.

기술↗

Nextest

Nextest는 Rust 테스트를 실행하고 결과를 관리하는 도구다. 테스트별 프로세스 분리와 선택 조건 및 재시도와 제한 시간 설정을 제공하며 지속적 통합 환경의 결과 보고와 실행 분할을 지원한다.

기술↗

Cargo Fuzz

Cargo Fuzz는 Rust 프로젝트에서 libFuzzer를 사용하는 퍼징 도구다. 검사 대상을 만들고 실행하는 Cargo 하위 명령을 제공하며 실패 입력과 입력 집합의 축소 및 커버리지 확인을 지원한다.

기술↗

Miri

Miri는 Rust 프로그램을 해석 실행하며 정의되지 않은 동작을 찾아내는 도구다. Cargo 프로젝트의 실행 파일과 테스트를 검사해 메모리 접근 및 자료 경쟁 등의 문제를 탐지하지만 모든 실행의 안전성을 증명하는 것은 아니다.

기술↗

QuickCheck Rust

QuickCheck Rust는 무작위 입력으로 속성 함수를 검사하는 테스트 라이브러리다. 실패한 입력을 더 작은 반례로 축소하며 기본 자료형의 생성과 사용자 정의 입력 생성을 지원한다.

기술↗

Loom 동시성 테스트

Loom은 Rust 동시성 코드의 실행 순서를 바꾸어 검사하는 테스트 도구다. 같은 테스트를 여러 번 실행하면서 가능한 동시 실행을 탐색하고 상태 축소 기법으로 탐색량을 줄인다.

기술↗

Criterion Rust 벤치마크

Criterion은 Rust 코드의 성능을 측정하고 이전 실행과 비교하는 마이크로벤치마크 라이브러리다. 통계 분석으로 변화의 크기와 유의성을 살피며 안정판 Rust에서 벤치마크를 실행할 수 있다.

기술↗

Proptest

Proptest는 Rust 코드가 여러 입력에서 정해진 속성을 만족하는지 검사하는 테스트 프레임워크다. 전략에 따라 입력을 자동 생성하고 실패하면 문제를 재현하는 더 작은 입력으로 축소한다.

기술↗

Thiserror

Thiserror는 Rust의 사용자 정의 오류 형식에 표준 Error 트레이트 구현을 생성하는 라이브러리다. 구조체와 열거형에 속성을 지정해 오류 메시지와 원인 연결 및 변환 규칙을 표현한다.

기술↗

Tracing Rust

Tracing은 Rust 프로그램에서 구조화된 사건과 실행 구간을 기록하는 진단 프레임워크다. 계측 지점에서 정보를 내보내고 구독자가 수집과 출력을 담당하며 비동기 작업에도 실행 맥락을 연결할 수 있다.

기술↗

Anyhow

Anyhow는 Rust 응용에서 여러 오류를 공통 오류 형식으로 다루는 라이브러리다. 트레이트 객체 기반 Error와 Result 별칭을 제공하고 원인 오류에 처리 맥락을 덧붙여 전파할 수 있다.

기술↗

Clap 명령행 파서

Clap은 Rust 프로그램의 명령행 인자를 해석하는 라이브러리다. 빌더 또는 derive 방식으로 인터페이스를 정의하고 인자 처리와 도움말 생성 등을 연결하며 셸 자동 완성과 매뉴얼 생성을 위한 주변 도구도 제공한다.

기술↗

Crossbeam

Crossbeam은 Rust의 동시성 프로그래밍에 사용하는 도구 모음이다. 채널과 동시 접근 큐, 원자적 값과 동기화 도구 및 에포크 기반 메모리 회수를 작은 라이브러리들로 나누어 제공한다.

기술↗

Rayon

Rayon은 Rust에서 자료 병렬 계산을 구성하는 라이브러리다. 병렬 반복자가 자료를 작업으로 나누어 처리하며, 더 세밀한 작업 구성과 사용자 정의 스레드 풀을 사용하는 인터페이스도 제공한다.

기술↗

Redis-rs

Redis-rs는 Rust에서 Redis와 Valkey 등 RESP 호환 서버를 사용하는 클라이언트 라이브러리다. 명령 실행과 값 변환을 제공하고 비동기 연결 및 클러스터와 TLS 기능을 선택해 구성할 수 있다.

기술↗

rust-postgres

rust-postgres는 Rust에서 PostgreSQL에 접속하는 드라이버 프로젝트다. 동기 클라이언트와 비동기 클라이언트를 나누어 제공하고 Rust와 데이터베이스 사이의 자료형 변환 및 TLS 연결을 별도 구성 요소로 연결한다.

기술↗

Rusqlite

Rusqlite는 Rust에서 SQLite를 사용하기 위한 래퍼 라이브러리다. 연결을 열고 SQL을 실행하거나 준비된 명령문으로 결과를 읽는 인터페이스를 제공하며 선택 기능으로 SQLite의 여러 API를 연결한다.

기술↗

SeaORM

SeaORM은 Rust 웹 서비스의 데이터베이스 작업을 표현하는 객체 관계 매핑 프레임워크다. 엔터티와 관계를 정의하고 조건 검색과 페이지 나누기 및 중첩 질의를 구성하며 모델을 통해 자료를 저장한다.

기술↗

Diesel ORM

Diesel은 Rust 형식 체계를 활용하는 객체 관계 매핑 도구이자 질의 빌더다. 데이터베이스 행을 구조체와 연결하고 조회와 삽입 및 갱신을 표현하며 필요한 경우 원시 SQL을 실행할 수 있다.

기술↗

SQLx

SQLx는 Rust에서 SQL 질의를 비동기로 실행하는 데이터베이스 도구다. 별도의 질의 전용 언어 대신 SQL을 사용하며 선택적으로 컴파일 시점에 질의를 검사하는 기능과 연결 풀을 제공한다.

기술↗

유튜브 숏츠 버튼이 남을 때 접근성 설정 확인

YouTube 재생 버튼이 계속 남아 있으면 Android 앱의 접근성 플레이어와 컨트롤 숨김 타이머를 확인한다. 화면 모양만으로 원인을 확정하지 말고 필요한 접근성 기능은 유지한다.

기술↗

Prost

Prost는 Protocol Buffers 메시지를 Rust에서 다루는 구현이다. proto2와 proto3 정의로 Rust 자료형을 생성하고 속성을 이용해 메시지를 직렬화하거나 역직렬화하며, 기존 Rust 자료형에도 변환 규칙을 추가할 수 있다.

기술↗

Serde

Serde는 Rust 자료 구조의 직렬화와 역직렬화를 위한 프레임워크다. 자료 구조와 저장 형식이 공통 인터페이스를 통해 연결되도록 설계하며 JSON 등 개별 형식은 별도 라이브러리가 담당한다.

기술↗

Tonic

Tonic은 Rust에서 비동기 gRPC 클라이언트와 서버를 구성하는 라이브러리다. HTTP 2 기반 통신과 Protocol Buffers 정의에서 코드를 생성하는 도구를 연결하며 스트리밍과 TLS 등의 기능을 지원한다.

기술↗

Tower 네트워크 라이브러리

Tower는 Rust의 네트워크 클라이언트와 서버에서 재사용할 처리 구성 요소를 만드는 라이브러리다. 요청을 받아 응답이나 오류를 비동기로 반환하는 Service와 이를 감싸는 Layer를 중심으로 미들웨어를 조합한다.

기술↗

Reqwest

Reqwest는 Rust에서 HTTP 요청을 보내는 클라이언트 라이브러리다. 비동기 및 블로킹 인터페이스를 제공하며 여러 본문 형식과 리다이렉트 정책, 프록시, 쿠키 저장 등의 기능을 지원한다.

기술↗

Hyper HTTP

Hyper는 Rust 응용에서 HTTP 클라이언트와 서버의 기반으로 사용하는 비동기 라이브러리다. HTTP 1과 HTTP 2를 지원하며, 더 높은 수준의 웹 프레임워크와 클라이언트가 그 위에 기능을 구성한다.

기술↗

Warp 웹 프레임워크

Warp는 필터를 조합해 HTTP 요청의 처리 조건을 표현하는 Rust 웹 프레임워크다. 경로와 헤더 및 요청 본문의 해석을 연결할 수 있으며 Hyper를 기반으로 비동기 HTTP 서버를 구성한다.

기술↗

Rocket 웹 프레임워크

Rocket은 Rust의 비동기 웹 프레임워크다. 요청에서 처리 함수의 인자 형식을 구성할 수 있는지 확인한 뒤 함수를 호출하고, 반환값의 Responder 구현에 따라 HTTP 응답을 만든다.

기술↗

Actix Web

Actix Web은 Rust로 HTTP 서버를 구성하는 웹 프레임워크다. 요청 라우팅과 비동기 처리에 더해 스트리밍, 압축, 정적 파일 및 미들웨어 기능을 제공하고 Tokio와 함께 사용할 수 있다.

기술↗

Axum

Axum은 Rust에서 HTTP 요청을 경로에 따라 처리하는 라이브러리다. 요청에서 필요한 값을 추출해 처리 함수에 전달하고 반환값을 응답으로 구성하며, Tower의 서비스 인터페이스로 미들웨어를 조합한다.

기술↗

클라우드웨이즈 여러 사이트와 상품별 과금

Cloudways는 계정 하나에서 여러 사이트를 운영할 수 있지만, Flexible의 서버 단위 운영과 Autonomous의 앱별 요금제를 구별해야 한다. 설치 개수 제한이 없다는 말은 자원이 무제한이라는 뜻이 아니다.

기술↗

새 홈페이지의 네이버 사이트명 검색 반영

새 홈페이지가 사이트명으로 검색되려면 검색로봇의 수집과 색인, 검색 결과 선정을 거쳐야 한다. 서치어드바이저는 소유 확인과 상태 점검을 돕지만 특정 검색어 노출이나 순위를 보장하지 않는다.

기술↗

Smol 런타임

Smol은 Rust의 여러 비동기 구성 요소를 묶어 제공하는 런타임이다. 작은 라이브러리들을 재노출하는 구성으로 실행기와 입출력 및 동기화와 채널 등의 기능을 조합한다.

기술↗

Tokio

Tokio는 Rust에서 비동기 응용을 실행하기 위한 런타임이다. 작업 스케줄러와 운영체제 사건을 처리하는 리액터 및 비동기 네트워크 소켓을 제공해 이벤트 기반의 논블로킹 입출력 프로그램을 구성한다.

기술↗

Seastar

Seastar는 다중 코어 환경의 서버 응용을 위한 C++ 프레임워크다. 코어별 샤드에 자료와 실행을 나누고 future와 코루틴으로 비동기 작업을 조합하며 네트워크와 저장소 및 실행 스케줄링을 제공한다.

기술↗

Boost Asio

Boost.Asio는 C++에서 네트워크와 운영체제 자원의 동기 및 비동기 입출력을 다루는 라이브러리다. 입출력 객체와 실행 맥락 및 완료 처리를 연결해 오래 걸리는 작업을 구성한다.

기술↗

libevent

libevent는 파일 서술자의 입출력 사건과 시간 만료 및 신호에 따라 콜백을 실행하는 라이브러리다. 운영체제마다 다른 이벤트 통지 기능을 공통 API로 제공해 이벤트 기반 네트워크 프로그램의 루프를 구성한다.

기술↗

libuv

libuv는 이벤트 기반 비동기 입출력을 제공하는 다중 플랫폼 라이브러리다. 이벤트 루프와 소켓 및 파일 작업과 스레드 기능을 공통 인터페이스로 연결하며 Node.js 등 여러 실행 환경의 기반으로 사용된다.

기술↗

아이패드 시스템 데이터와 저장 공간 점검

아이패드 시스템 데이터에는 캐시와 로그 등 여러 항목이 포함된다. 표시 용량 하나로 고장을 확정하지 말고 기기 저장 공간과 사용 가능한 공간을 확인한 뒤 데이터 보존을 우선해 점검한다.

기술↗

Boehm 가비지 수집기

Boehm 가비지 수집기는 C와 C++ 환경에서 자동 메모리 회수를 제공하는 보수적 가비지 수집기다. Boehm-Demers-Weiser 수집기라고도 하며 더 이상 접근할 수 없다고 판단한 메모리를 재사용한다.

기술↗

Userspace RCU

Userspace RCU는 사용자 공간 프로그램에서 Read-Copy Update 방식의 동시 자료 접근을 제공하는 라이브러리다. 읽기 구간과 갱신 및 이전 자료의 사용이 끝나는 시점을 연결해 안전한 자료 교체와 지연 처리를 구성한다.

기술↗

Hoard 할당기

Hoard는 여러 스레드와 처리 장치가 있는 환경의 메모리 할당을 위한 도구다. malloc을 대체하는 방식으로 연결하며 할당 요청의 경합과 거짓 공유 및 스레드 수에 따라 늘어나는 메모리 부담을 주요 설계 문제로 다룬다.

기술↗

rpmalloc

rpmalloc은 C로 구현한 범용 메모리 할당기다. 스레드 캐시와 원자적 연산을 활용하는 설계를 사용하며 여러 운영체제에서 메모리 할당 및 반환과 실행 중 설정 기능을 제공한다.

기술↗

mimalloc

mimalloc은 malloc을 대체할 수 있는 범용 메모리 할당기다. 페이지별로 분리한 빈 공간 목록과 스레드별 해제 경로를 이용해 메모리의 지역성과 동시 요청의 처리를 개선하도록 설계되었다.

기술↗

snmalloc

snmalloc은 여러 스레드의 메모리 할당과 해제를 처리하는 할당기다. 다른 스레드에서 해제한 공간을 메시지 전달로 원래 할당기에 돌려보내 재사용하며 대량 해제와 스레드 간 해제를 주요 설계 대상으로 삼는다.

기술↗

CCTV 해외 IP 차단과 원격 접속 보안

CCTV 로그인 시도를 줄이려면 국가별 IP 차단의 한계를 이해하고, 외부에 열린 접속 경로와 허용 대상을 함께 점검해야 한다. 국가 분류는 접속자의 신원이나 안전성을 보증하지 않는다.

기술↗

gperftools

gperftools는 메모리 할당기와 성능 분석 도구를 함께 제공하는 소프트웨어 모음이다. TCMalloc 기반 할당 기능과 힙 및 CPU 프로파일러를 포함하며 수집한 자료는 pprof 같은 도구로 분석한다.

기술↗

jemalloc

jemalloc은 메모리 단편화를 줄이고 여러 스레드의 할당 요청을 처리하도록 설계된 범용 메모리 할당기다. 표준 할당 함수와 함께 힙 프로파일 및 통계와 동작 조정 기능을 제공한다.

기술↗

rbspy

rbspy는 실행 중인 Ruby 프로그램의 호출 정보를 표본으로 수집하는 프로파일러다. 프로세스를 다시 시작하지 않고 관측할 수 있으며 원시 기록과 플레임 그래프를 남겨 나중에 분석할 수 있다.

기술↗

StackProf

StackProf는 Ruby 프로그램의 호출 스택을 표본으로 수집하는 프로파일러다. 전체 경과 시간과 CPU 사용 및 객체 할당 등의 기준으로 관측하고 호출 관계와 코드 줄별 분포를 분석한다.

기술↗

Hotspot 프로파일 뷰어

Hotspot은 Linux perf가 만든 성능 기록을 탐색하는 그래픽 도구다. 호출 경로와 플레임 그래프 및 시간축을 연결하고 프로세스나 스레드 및 시간 구간으로 분석 대상을 좁혀 실행 비용을 조사한다.

기술↗

Heaptrack

Heaptrack은 Linux 응용의 힙 메모리 할당을 호출 스택과 함께 기록하는 프로파일러다. 할당이 집중되는 위치와 누수 및 짧게 생성되었다가 해제되는 임시 할당을 분석하고 그래프나 명령행 보고서로 결과를 살핀다.

기술↗

OBS 검은 화면 녹화와 카메라 신호 점검

카메라에는 영상이 보이는데 녹화 파일은 검게 나올 때는 입력 신호, OBS 프로그램 출력, 저장 파일 재생을 구분해 확인한다. 재시작 후 정상이라는 사실만으로 프로그램 오류나 장비 고장을 확정할 수 없다.

기술↗

Eclipse Memory Analyzer

Eclipse Memory Analyzer는 Java 힙 덤프를 분석해 객체의 메모리 사용과 참조 관계를 조사하는 도구다. MAT라는 약칭으로도 불리며 객체가 회수되지 않는 이유와 큰 메모리 점유의 원인을 찾는 데 사용한다.

기술↗

VisualVM

VisualVM은 Java 응용의 상태 관측과 성능 분석 및 덤프 조사를 한 화면에 연결하는 도구다. 실행 중인 프로세스의 CPU와 메모리 및 스레드를 살피고 기록된 스냅샷을 오프라인에서 분석할 수 있다.

기술↗

async-profiler

async-profiler는 HotSpot 기반 Java 실행 환경의 표본을 수집하는 프로파일러다. Java 호출뿐 아니라 네이티브와 커널 프레임 및 가비지 수집 같은 내부 스레드도 관측해 여러 실행 비용을 함께 조사한다.

기술↗

pprof

pprof는 프로파일 표본을 읽어 텍스트와 그래프로 분석하는 도구다. 호출 스택과 심벌 정보를 담은 공통 형식의 자료를 처리하고 같은 종류의 프로파일을 합치거나 비교해 실행 비용을 조사한다.

기술↗

Speedscope

Speedscope는 여러 프로파일러의 결과를 브라우저에서 탐색하는 뷰어다. 호출 스택의 시간 순서와 집계된 비용 및 함수의 호출 관계를 서로 다른 화면으로 살펴 실행 비용이 집중되는 경로를 조사한다.

기술↗

플레임 그래프

플레임 그래프는 프로파일의 호출 스택을 사각형의 계층과 너비로 표현하는 시각화다. 자주 나타나는 호출 경로를 모아 보여 주며 일반적인 형태의 가로 위치는 시간 순서를 뜻하지 않는다.

기술↗

Yappi

Yappi는 여러 스레드와 비동기 실행을 고려해 Python 함수의 실행 비용을 추적하는 프로파일러다. CPU 시간이나 전체 경과 시간을 선택하고 함수 및 스레드별 결과를 수집해 정렬하고 비교할 수 있다.

기술↗

Pyinstrument

Pyinstrument는 Python 프로그램의 호출 스택을 주기적으로 기록하는 통계적 프로파일러다. 전체 경과 시간을 기준으로 호출 경로의 비용을 보여 주며 비동기 작업이 기다리는 시간도 실행 맥락과 연결해 분석한다.

기술↗

Austin 프로파일러

Austin은 CPython의 실행 프레임 스택을 표본으로 수집하는 도구다. C로 구현하며 대상 인터프리터의 메모리에서 스레드와 호출 정보를 읽고 별도의 시각화 및 분석 도구가 사용할 기록을 출력한다.

기술↗

Memray

Memray는 Python 프로그램의 메모리 할당을 추적하는 프로파일러다. Python 코드와 네이티브 확장 및 인터프리터 내부의 할당을 관측하고 호출 경로와 보고서로 높은 메모리 사용의 원인을 조사하도록 한다.

기술↗

py-spy

py-spy는 Python 프로그램의 호출 스택을 표본으로 수집하는 프로파일러다. 대상 프로세스 밖에서 메모리를 읽어 실행 정보를 얻으며 코드를 수정하거나 프로그램을 다시 시작하지 않고 분석할 수 있다.

기술↗

Scalene 프로파일러

Scalene은 Python 프로그램의 CPU와 GPU 및 메모리 사용을 분석하는 프로파일러다. 줄과 함수별 실행 비용을 보여 주고 Python 코드와 네이티브 코드의 비용을 나눠 병목의 성격을 파악하도록 한다.

기술↗

Tracy 프로파일러

Tracy는 게임과 일반 응용의 실행 비용을 조사하는 프로파일러다. 프레임 중심의 관측과 표본 수집을 결합하고 CPU 및 GPU 작업뿐 아니라 메모리 할당과 잠금 및 문맥 전환 등의 정보도 다룬다.

기술↗

Perfetto

Perfetto는 실행 사건을 수집하고 시간축으로 분석하는 SDK와 데몬 및 도구 모음이다. 응용 내부와 운영체제의 정보를 함께 기록하고 브라우저 화면과 SQL 분석 기능으로 성능 및 동작 문제를 조사한다.

기술↗

SystemTap

SystemTap은 실행 중인 Linux 시스템에서 관측 자료를 수집하는 계측 도구 체계다. 커널과 사용자 공간 응용을 대상으로 스크립트를 작성해 성능이나 기능상의 문제를 조사하고 공통 계측 기능을 재사용할 수 있다.

기술↗

Trace Compass

Trace Compass는 시스템의 추적 기록과 로그를 읽어 성능과 신뢰성 문제를 분석하는 응용 프로그램이다. 시간에 따른 상태와 호출 관계 및 지표를 시각화하고 여러 종류의 기록을 서로 연결해 해석한다.

기술↗

rr 디버거

rr은 Linux 프로그램의 실행을 기록한 뒤 같은 실행을 반복 재생하며 디버깅하는 도구다. GDB와 연결해 기록된 실행을 조사하고 역방향으로 이동해 오류를 일으킨 이전 상태를 찾을 수 있다.

기술↗

LLDB

LLDB는 LLVM 프로젝트의 라이브러리를 활용하는 디버거다. 재사용 가능한 구성 요소와 공개 API를 제공하고 Clang의 표현식 처리 기능을 이용해 프로그램의 상태와 표현식을 조사한다.

기술↗

GDB

GDB는 실행 중인 프로그램이나 충돌 당시의 내부 상태를 조사하는 GNU 프로젝트의 디버거다. 조건에 따라 실행을 멈추고 상태를 살피거나 값을 바꾸며 로컬과 원격 및 시뮬레이터의 프로그램을 분석할 수 있다.

기술↗

Valgrind

Valgrind는 프로그램 실행을 계측해 오류와 성능 특성을 분석하는 도구 체계다. 동적 바이너리 계측을 바탕으로 메모리와 스레드 문제의 검사 및 실행 비용 분석을 위한 여러 도구를 제공한다.

기술↗

BCC 추적 도구

BCC는 eBPF 기반의 Linux 커널 추적 및 관측 프로그램을 만드는 도구 모음이다. C로 작성하는 커널 계측 코드와 Python 및 Lua의 사용자 공간 인터페이스를 연결하고 여러 분석 도구를 함께 제공한다.