본문 바로가기

전체 글142

[Linux Kernel] 리눅스는 얼마나 작아질 수 있을까? 리눅스는 config를 통해서 다양한 환경에서 사용하도록 커스터마이징할 수 있다. 세계 500위 슈퍼컴퓨터부터 스마트폰, 데스크탑 등 다양한 환경에서 리눅스를 실행할 수 있다. 최근 십수년간 리눅스에 상업적인 기업들이 참여하면서 비대해진 경향이 있지만, 이 글은 최대한 커스터마이징을 해서 리눅스를 최대한 작게 만들어보려고 한다. 이 글에선 v5.15 기준으로 실험해본다. 결론부터 적자면 결론부터 적자면 내가 실험했을 때는 x86_64에서는 약 29MiB의 RAM이, 32비트 ARM에서는 6.6MiB의 RAM이 필요했다. 다른 자료를 보면 4MiB에서 구동한 사례도 있고, 아니면 아예 커널의 크기를 줄이는 게 아니라 XIP(Execute In Place)라고 해서 RAM으로 커널을 불러와서 실행하는 게 아.. 2021. 12. 5.
Linux Performance Analysis in 60 seconds 이 글은 넷플릭스 기술 블로그의 Linux Performance Analysis in 60,000 Milliseconds를 읽으면서 정리한 것이다. Linux Performance Analysis in 60,000 Milliseconds You log in to a Linux server with a performance issue: what do you check in the first minute? netflixtechblog.com 넷플릭스는 수많은 AWS EC2 인스턴스를 사용하고 이 인스턴스들의 성능을 모니터링하는 도구를 사용한다. 클라우드 성능 모니터링에 Atlas를 사용하고, 온디맨드 모니터링에 Vector를 사용한다. Atlas나 Vector로 대부분의 이슈를 해결할 수 있지만 가끔은 직접.. 2021. 12. 4.
LEGv8 ISA - 특징과 명령어 포맷 Introduction LEGv8 ISA는 Computer Organization And Design: ARM Edition에서 소개하는 ISA (Instruction Set Architecture)이다. 이 책이 Computer Organization And Design의 ARM 버전이지만 ARMv8의 전체 명령어 집합을 교육용으로 다루기에는 복잡하다. 그래서 책에서 LEGv8이라고 하는 ARMv8 ISA의 부분 집합을 정의한다. 부분 집합이라고는 하지만 일부 명령어는 ARMv8와 다르다. 일부 ARMv8 스펙은 불필요하게 프로세서를 복잡하게 만들기 때문에 LEGv8은 이런 명령어들을 좀더 단순화한다. 이 글에서는 LEGv8의 특징과 명령어 포맷에 대해 다룬다. 이 글의 모든 사진은 Computer O.. 2021. 12. 2.
Instruction Set Architecture vs Microarchitecture PPT 출처 Computer Architecture 컴퓨터의 목적은 사람이 원하는 것을 기계에게 전달하는 것이다. 아래의 이미지에서 Application은 우리가 사용하는 프로그램 (브라우저, 게임, ... 등등)이고, 전자가 움직이는 것처럼 물리적인 부분이다. 브라우저와 물리 현상 사이에는 엄청난 갭이 있기 때문에 여러 개의 계층을 거쳐야 컴퓨터가 우리가 원하는 것을 실행하도록 할 수 있다. 그래서 컴퓨터 아키텍처는 넓은 의미로 보면 Application과 Phyics 사이의 갭을 해결하는 것이라고 할 수 있다. 하지만 현실적으로는 Application과 Physics의 갭이 매우 크기 때문에 이 사이를 여러 개의 계층으로 나눌 수 있다. 프로그래밍 언어, 운영체제, 명령어 집합, 명령어 집합의 구현체.. 2021. 12. 1.
Grafana에서 bpftrace 사용하기 (feat. Performance Co-Pilot) 최근에 BPF 스크립트, Flame Graph를 Grafana 같은 모니터링 시스템에서 실행하는건 어떤가 생각했는데 이미 있었다. 와 이게 된다니!! 이 글에서는 Ubuntu 21.04 (hirsute)에서 Performance Co-Pilot 플러그인으로 Grafana에서 bpftrace를 사용하는 방법을 다룬다. bpftrace 설치 당연하게도 bpftrace를 Grafana에서 사용하려면 bpftrace를 먼저 설치해야한다. $ sudo apt-get install -y bpftrace bpftrace 설치는 간단한데 bpftrace를 사용하려면 커널이 BPF 관련 일부 config가 활성화된 상태로 빌드되어야 한다. 요즘 배포판에선 대부분 기본적으로 켜져있는 것 같다. CONFIG_BPF=y CO.. 2021. 11. 28.
Grafana로 모니터링 시스템 구축하기 저번에 구축한 오드로이드 홈서버에 Grafana로 모니터링 시스템을 구축해보려고 한다. 배포판은 Armbian (데비안)이다. 구성 Grafana: 모니터링 시스템 Prometheus: Grafana의 데이터 소스로 사용할 시스템으로 node_exporter로부터 모니터링 데이터를 수집 node_exporter: 각종 모니터링 데이터를 보여준다. node_exporter 설치 # node_exporter 다운로드 # 여기선 오드로이드에 설치할거라 ARM이지만 아니라면 따로 받아야함 # 링크 : https://prometheus.io/download/#node_exporter $ wget https://github.com/prometheus/node_exporter/releases/download/v1.2.. 2021. 11. 18.
오드로이드 홈서버 구축기 - 운영체제 설치 (Armbian) 오드로이드에서는 공식적으로 오드로이드용 Ubuntu 배포판을 지원한다. 하지만 배포판 버전이랑 커널 버전이 늦게 업데이트되어서 비공식 배포판을 사용해야한다. 나는 Armbian을 설치할 것이다. 원래 Fedora를 설치해보고 싶었는데 그러려면 내가 직접 이미지를 만들어야 해서 그냥 Armbian으로 했다. Ubuntu나 다른 비공식 배포판도 있긴하다. 원래는 우분투 비공식 이미지에서 커널이랑 배포판 업데이트를 하려고 했는데 Armbian이 더 간편하다. Armbian Download – Armbian CategoryAllGeneral purposeIOTNASNetworkingDesktop MakerAllSolidRunCubietechSinovoipOlimexKobolHardkernelAsusFriendl.. 2021. 11. 18.
오드로이드 홈서버 구축기 - 하드웨어 구성 매달 구글 클라우드 플랫폼에 5~10만원씩 내다보니까 좀 빡세서 휴가 나온 김에 홈서버를 구축해봤다. 서버로 쓸 보드는 하드커널의 오드로이드 시리즈이다. 오드로이드 HC4, XU4, N2+를 샀다. 싱글보드 컴퓨터 종류 중에 성능이 제일 괜찮은게 오드로이드라고 생각한다. (홍보글 아님) 서버 구성 ODROID HC4 CPU는 Cortex-A55 1.8GHz 쿼드코어에 메모리는 DDR4 4GB 정도이다. 원래 N2+를 2개 사려다가 SATA 커넥터가 있어서 이것도 하나 샀다. SSD나 HDD를 직접 연결할 수 있다. USB 처럼 혹시 툭 쳐서 뽑히는 일은 없겠지 (?) 여기에 장착할 500GB짜리 SSD랑 2TB짜리 HDD도 사서 꽂아봤다. ODROID N2+ 얘는 big.Little CPU를 사용한다. .. 2021. 11. 16.
[Lecture Note] Learn how to learn - 1주차 Focused Thinking vs Diffuse Thinking Focused thinking은 한 가지 주제를 가지고 골똘히 생각하는 것이다. 이미 익숙한 주제에 대해서 생각할 때 Focused thinking을 한다. 이때는 하나의 좁은 주제에 대해서 집중적으로 생각한다. 반면 Diffuse thinking은 더 폭 넓게 창의적인 생각을 할 때 사용한다. 처음 배우는, 익숙하지 않은 주제에 대해서는 Diffuse thinking을 하는 게 학습에 더 도움이 된다. 그리고 Diffuse thinking은 창의적인 생각을 할 때도 자주 사용된다. 걷거나, 잠이 들기 전이나, 샤워할 때처럼 자연스럽고 차분하게 생각을 하면 창의적이고 더 넓은 시야로 문제를 바라볼 수가 있다. Procrastination .. 2021. 11. 7.