1P by GN⁺ | ★ favorite | 댓글 1개
  • 저장 용량을 여러 차례 늘려도 사용량이 함께 증가하며, 81명이 참여한 Mastodon 설문에서도 약 절반이 디스크를 75% 넘게 사용하고 있었음
  • 빈 상태보다 가득 찬 상태에 도달할 방법이 많다는 엔트로피 논리로 일부 설명할 수 있지만, 사용자 행동까지 완전히 설명하지는 못함
  • 한계에 이르기 전까지 정리를 미루다가 당장 필요한 만큼만 지우는 행동이 디스크를 상시 포화 상태에 머물게 함
  • 느려진 소프트웨어, 누적된 기술 부채, 혼잡한 도로, 빡빡한 일정도 고통이 임계점에 도달한 뒤에야 대응한다는 같은 패턴을 보임
  • 전체 자원보다 작은 인위적 제약을 예산처럼 설정하면 성급한 최적화를 피하면서도 문제를 한계점까지 방치하지 않을 수 있음

저장 공간이 계속 가득 차는 이유

  • 루트 드라이브는 사용 가능한 0.47TB 가운데 17GB만 남아 여유 공간이 3% 이며, 추가로 설치한 12TB 드라이브도 140GB, 약 1%만 남아 있음
  • 저장 공간은 1990년대 약 80MB에서 수십 TB까지 여러 차례 두 배로 늘었지만 여전히 대부분 사용 중임
    • 정리할 파일을 찾아주는 소프트웨어가 오래전부터 존재한다는 사실도 이 문제가 지속돼 왔음을 보여줌
  • Mastodon 설문 응답자 81명 중 약 절반은 하드 드라이브를 75% 넘게 사용하고 있어, 저장 공간이 비어 있기보다 가득 찬 경우가 흔했음
  • 빈 디스크보다 가득 찬 디스크를 구성하는 상태가 더 많으므로, 저장량을 고려하지 않고 상태를 무작위로 바꾸면 포화 상태로 향한다는 엔트로피 기반 해석이 가능함
  • 그러나 디스크는 더 저장할 수 없을 때까지 문제로 느껴지지 않고, 그 시점에는 지나치게 어질러져 모든 파일의 삭제 여부를 판단하기 어려움
    • 사용자는 시간을 벌 만큼만 정리하고 중단하므로 디스크가 다시 빠르게 한계에 도달함
    • 저장 용량을 몇 자릿수 규모로 늘려도 이러한 행동은 바뀌지 않음

고통의 한계점과 인위적 제약

  • 문제가 견딜 수 없는 수준에 이를 때까지 대응을 미루는 패턴은 여러 영역에서 반복됨
    • 소프트웨어는 너무 느려질 때까지 최적화하지 않아 대체로 계속 느린 상태에 머묾
    • 기술 부채는 코드 작업이 고통스러워져 리팩터링이 불가피할 때까지 쌓임
      • 경험이 적은 개발자는 아예 다시 시작하기도 해 대부분의 코드베이스가 어수선해짐
    • 도로망은 감당하기 어려울 만큼 혼잡해진 뒤에야 확장함
    • 식단은 더 큰 바지를 사야 할 때까지 관리하지 않음
    • 전업 직장을 그만두고 자영업자가 되어 의무와 지시가 사라져도 일정은 이전만큼, 때로는 그 이상 바쁘게 채워짐
  • 한계점까지 기다리면 진행 중에 조금씩 해결했을 때보다 처리해야 할 일이 훨씬 커지지만, 반대로 성급한 최적화 역시 바람직하지 않음
  • 두 문제를 조정하려면 Jevons paradox를 활용해 전체 가용 자원보다 작은 실질적 제약을 두고, 그 범위에 맞춰 최적화할 수 있음
    • 개인 재무에서는 이를 예산이라고 부르지만 다른 분야에서는 같은 원리가 반복해서 간과됨
    • Raspberry Pi에 소프트웨어를 배포해 직접 사용하며 최적화하면 Threadripper에서도 빠르게 동작함
    • 80×25 터미널의 Vim에서 탐색 가능한 코드베이스는 강력한 현대식 IDE에서도 탐색할 수 있음
  • 자원과 기능이 늘어나면 더 많은 일을 할 수 있을 것 같지만, 실제로는 같은 일을 더 큰 비용으로 수행하게 만들기도 함

댓글과 토론

Lobste.rs 의견들
  • 크로스 플랫폼 데스크톱 소프트웨어를 만들 때는 문제가 한계에 도달하기 전에 해결하는 편이 훨씬 수월함. 그래서 첫 Git 커밋부터 Windows, Mac, Linux에서 항상 빌드하고 실행한다는 원칙을 적용했음
    고통스러운 제약이었지만 고객 지원 요청 한 부류를 통째로 없애줬음. 경쟁사들은 Mac과 Linux만 지원하거나 Windows만 내놓고 UNIX 지원을 약속하곤 하는데, 사용자들의 끊임없는 “Linux는 언제?”라는 질문에 시달리는 모습을 보며 안도하게 됨. 여전히 “BSD 포팅은 언제?”라는 질문은 받지만 감당할 만한 수준임
    • BSD 포팅을 요청하는 사람들은 직접 돕겠다고 나서는 비율도 유난히 높을 것 같은데, 맞는지 궁금함
  • Raspberry Pi에 배포해 직접 사용해 본 소프트웨어라면 Threadripper에서도 빠르게 동작한다는 데 전적으로 동의함. 분기 예측, 메모리 접근 지연, 인라이닝처럼 현대 CPU를 겨냥한 저수준 최적화는 지난 15~20년 사이 출시된 어느 CPU에서도 효과적이었음
    최신 SIMD 명령어도 재미있지만, 모든 최적화의 기준은 2015년형 MacBook Pro의 Intel Haswell과 AVX2로 잡고 있음. 그 환경에서 잘 동작하는 코드는 오늘날에도 똑같이 잘 동작함
  • 흥미로운 관점임. 현재 1TB 디스크의 97% 를 사용 중임
    256GB에서 512GB로 늘릴 때마다 저장하는 콘텐츠도 함께 늘어났음. 복제할 저장소, 내려받을 음악, 보관할 YouTube 영상과 영화는 끝없이 생기고, 720p에서 1080p와 4K로 넘어가며 파일 크기도 커짐. 게임도 다른 Steam 게임을 설치하려면 하나를 지워야 할 정도로 비대해지고 있음. 결국 더 큰 바구니를 얻을 때까지 현재 바구니에 가능한 만큼 채우는 단순한 현상인지 궁금함
    • 여기서 저장소를 복제한다는 게 단순히 오프라인 보관이나 북마크를 위한 것인지, 아니면 소프트웨어 설치 과정에 필요한 것인지 궁금함
      나는 마음에 드는 저장소를 GitHub나 Codeberg 등에서 별표 처리함. 언젠가 연합우주처럼 서로 다른 Git 포지에서도 별표를 공유할 수 있게 되어 GitHub, GitLab, Codeberg마다 계정을 유지하지 않아도 되길 기대함. 저장소가 사라지거나 접근 불가능해질 상황에 대비해 코드를 직접 복제해 두는 것인지 알고 싶음
  • /nix 파티션은 완전히 새로 설치한 직후가 아니면 거의 항상 90% 이상 차 있음. Nix는 메모리 관리와 비슷하게 공간이 필요할 때만 가비지 컬렉션으로 디스크를 회수한다는 개발자의 관점을 명확히 보여줌. 여러 버전의 중간 빌드 산출물도 막대한 공간을 차지함
    미디어 서버는 가득 차지 않는데, 오래된 드라이브가 고장날 때마다 비슷한 가격의 더 큰 드라이브로 교체하면서 몇 년에 걸쳐 천천히 커지는 이기종 RAID를 사용하기 때문임. 집의 모든 CD와 DVD를 디지털화하려던 시도도 포기했음. 무손실 압축을 쓰는 오디오 CD와 Wii 게임은 가치가 있지만 HD-DVD는 전혀 수지가 맞지 않음
    • CD와 DVD는 이미 디지털 매체 아닌지 궁금함
  • 나는 rootfs를 tmpfs에서 실행함. 영구 저장용 하드 드라이브는 거의 비어 있지만 tmpfs는 이해하기 어려운 방식으로 계속 어질러짐. RAM이 부족해지면 시스템을 재시작해 임시 공간을 되찾음
    가치 있는 자료가 사라지지 않도록 보통 Nix에 기록하고 Git을 사용하는 프로젝트 폴더에 보존하는 작업은 번거로움. 이런 타임머신 장치를 수년간 유지하는 데 엄청난 노력이 들었지만, 끊임없이 증가하는 규모와 복잡성을 관리할 유일한 방법처럼 느껴짐
  • 파킨슨의 법칙이 떠오름. “업무는 완료에 사용할 수 있는 시간을 모두 채우도록 늘어난다”는 법칙임
  • 아슬아슬하게 사는 걸 좋아하지 않는 모양임. 행복한 삶이란 바쁘지만 쫓기지는 않고, 소프트웨어는 딱 필요한 만큼 빠르며, 돈과 필요가 중간에서 만나고, 하드 드라이브에는 딱 알맞은 여유 공간이 남아 있는 상태임