▲GN⁺ 2025-03-19 | parent | ★ favorite | on: Ubuntu 패키지를 다시 빌드하여 90% 더 빠르게 만들기(gist.github.com/jwbee)Hacker News 의견 "Ubuntu 패키지를 재구성하고 메모리 할당기를 변경하여 90% 더 빠르게 만들기"라는 제목은 클릭베이트 같음 단 하나의 패키지에 대한 이야기이며, 일부 성능 향상은 재컴파일로 실현되지 않았음 jemalloc을 미리 로드하여 malloc 구현을 교체한 경험이 있으며, 메모리 사용량을 안정화하는 데 긍정적인 결과를 얻었음 이는 메모리 누수 문제를 해결했으며, 애플리케이션 자체의 문제가 아닌 메모리 단편화 문제였을 가능성이 높음 엔지니어링은 타협의 예술임 기사에서는 메모리 할당기를 전문화하여 대부분의 성능 향상을 얻었다고 설명함 멀티스레드 프로젝트에서는 할당기 선택이 중요하며, 한 프로젝트에서의 속도 향상이 다른 프로젝트에서는 충돌을 일으킬 수 있음 재할당 전략도 고려해야 하며, 장기적인 안정성과 단기적인 속도 사이의 선택이 필요함 비디오 편집기 개발 중 다양한 할당기를 실험했으며, glibc 할당기가 장기적인 안정성을 제공함을 발견했음 Gentoo Linux는 사용자의 특정 용도에 맞게 최적화할 수 있도록 설계된 운영체제임 초기 설정 후 사용이 간단하며, Gentoo Linux 채널에서 많은 친구를 사귀었던 기억이 있음 초기 ChromeOS는 기본적으로 커스텀 Gentoo Linux 설치였음 jq와 같은 패키지를 수동으로 설치하면 보안 업데이트에서 제외될 수 있음 예를 들어, onigurama의 보안 업데이트가 있었으며, 이러한 상황이 다시 발생하면 취약해질 수 있음 CVE-2017-9224 등 여러 보안 취약점이 수정된 사례가 있음 비공식적인 malloc을 사용하면 이상한 버그가 발생할 수 있음 개발자들이 사용하는 플래그를 넘어서면 문제가 발생할 가능성이 높음 간단한 변경으로 큰 속도 향상을 얻을 수 있다는 것을 읽고 jq의 개발자에게 알리고 싶음 기사는 이 옵션을 고려하지 않은 것 같으며, 댓글에서도 언급되지 않음 패키지를 소스에서 컴파일하거나 공식 바이너리를 다운로드하는 것이 유익할 수 있음 수동 설치 및 소스 컴파일 패키지의 업데이트 확인이 어려웠으나, 이를 해결하기 위한 도구를 개발했음 Rust의 "cargo install" 기능은 특정 플랫폼의 최적화를 가능하게 하여 유용함 jaq와 yq는 jq를 사용할 때 성능 향상을 위해 자주 사용하는 옵션임 메모리 할당기를 변경한 후 Ubuntu 패키지를 재구성하여 90% 더 빠르게 만들 수 있음 Debian과 RedHat에서도 작동할 가능성이 있음 처음에는 Ubuntu를 Linux From Scratch로 변환하는 기사인 줄 알았음
Hacker News 의견
"Ubuntu 패키지를 재구성하고 메모리 할당기를 변경하여 90% 더 빠르게 만들기"라는 제목은 클릭베이트 같음
엔지니어링은 타협의 예술임
Gentoo Linux는 사용자의 특정 용도에 맞게 최적화할 수 있도록 설계된 운영체제임
jq와 같은 패키지를 수동으로 설치하면 보안 업데이트에서 제외될 수 있음
비공식적인 malloc을 사용하면 이상한 버그가 발생할 수 있음
간단한 변경으로 큰 속도 향상을 얻을 수 있다는 것을 읽고 jq의 개발자에게 알리고 싶음
패키지를 소스에서 컴파일하거나 공식 바이너리를 다운로드하는 것이 유익할 수 있음
Rust의 "cargo install" 기능은 특정 플랫폼의 최적화를 가능하게 하여 유용함
메모리 할당기를 변경한 후 Ubuntu 패키지를 재구성하여 90% 더 빠르게 만들 수 있음