Phát triển jemalloc kết thúc sau 20 năm khi Meta chuyển hướng tập trung khỏi công nghệ cốt lõi

Nhóm biên tập BigGo
Phát triển jemalloc kết thúc sau 20 năm khi Meta chuyển hướng tập trung khỏi công nghệ cốt lõi

Sau hai thập kỷ phát triển và được áp dụng rộng rãi trên các nền tảng lớn, bộ cấp phát bộ nhớ jemalloc đã đến hồi kết của chu kỳ phát triển tích cực. Người tạo ra dự án đã thông báo rằng việc phát triển upstream đã kết thúc, đánh dấu sự kết thúc của một kỷ nguyên cho một trong những công cụ quản lý bộ nhớ có ảnh hưởng nhất trong ngành máy tính hiện đại.

jemalloc bắt đầu hành trình của mình vào năm 2004 như một phần của dự án ngôn ngữ lập trình có tên Lyken, nhưng đã tìm thấy sứ mệnh thực sự khi được tích hợp vào FreeBSD vào năm 2005. Bộ cấp phát này được thiết kế để giải quyết nhu cầu ngày càng tăng về quản lý bộ nhớ đa luồng khi máy tính chuyển đổi sang kiến trúc đa bộ xử lý. Thành công của nó đã dẫn đến việc được áp dụng bởi các dự án lớn bao gồm Mozilla Firefox, nơi nó giúp giải quyết các vấn đề phân mảnh bộ nhớ nghiêm trọng trên hệ thống Windows.

Lịch sử phát triển jemalloc

  • 2004: Ý tưởng ban đầu như một phần của ngôn ngữ lập trình Lyken
  • 2005: Bắt đầu tích hợp vào FreeBSD
  • 2007: Mozilla Firefox áp dụng để giải quyết vấn đề phân mảnh trên Windows
  • 2009-2017: Giai đoạn phát triển bởi Facebook/Meta với những cải tiến lớn
  • 2016: Bắt đầu phát triển Huge Page Allocation (HPA)
  • 2024: Kết thúc giai đoạn phát triển chính thức

Đầu tư của doanh nghiệp thúc đẩy đổi mới

Giai đoạn tăng trưởng đáng kể nhất của bộ cấp phát diễn ra trong thời gian tại Facebook (sau này là Meta), nơi nó được hưởng lợi từ dữ liệu telemetry quy mô lớn từ hàng nghìn quy trình làm việc khác biệt. Dữ liệu hiệu suất thực tế này đã chứng minh vô cùng có giá trị cho việc tối ưu hóa, cho phép các nhà phát triển đưa ra quyết định sáng suốt về cải tiến đường dẫn nhanh và chiến lược tránh phân mảnh. Khoản đầu tư của công ty vào phát triển jemalloc bao gồm xây dựng các nhóm chuyên dụng và triển khai cơ sở hạ tầng kiểm thử toàn diện.

Tuy nhiên, các cuộc thảo luận cộng đồng tiết lộ rằng việc Meta gần đây chuyển hướng tập trung vào việc nhấn mạnh lợi tức đầu tư thay vì phát triển công nghệ cốt lõi đã chấm dứt hiệu quả động lực tiến về phía trước của dự án. Tính năng Huge Page Allocation (HPA), đã được phát triển từ năm 2016, gần đây đã trì trệ khi nợ kỹ thuật tích tụ mà không có việc tái cấu trúc phù hợp.

Những người dùng chính của jemalloc

  • FreeBSD (bộ cấp phát bộ nhớ mặc định của hệ thống)
  • Cơ sở dữ liệu Redis
  • Mozilla Firefox (phiên bản được fork)
  • Các ứng dụng Ruby on Rails
  • Android (trước đây, hiện đã được thay thế)
  • Hạ tầng của Meta/Facebook

Thách thức kỹ thuật và tác động cộng đồng

Nhóm phát triển đã đối mặt với một số trở ngại kỹ thuật trong suốt quá trình phát triển của jemalloc. Các phiên bản đầu gặp phải các vấn đề phân mảnh nghiêm trọng dưới một số khối lượng công việc nhất định, đặc biệt với các ứng dụng KDE, buộc phải thiết kế lại hoàn toàn các thuật toán cấp phát. Các quyết định sau này, chẳng hạn như loại bỏ hỗ trợ Valgrind trong phiên bản 5.0.0, đã tạo ra ma sát với người dùng bên ngoài dựa vào các khả năng gỡ lỗi này.

Jemalloc vẫn là IMO triển khai malloc đa mục đích có hiệu suất tốt nhất mà dễ sử dụng; TCMalloc rất tuyệt, nhưng là một cơn ác mông tuyệt đối để sử dụng nếu bạn không sử dụng bazel

Cộng đồng hiện đang vật lộn với những gì sẽ đến tiếp theo. Trong khi jemalloc sẽ vẫn có sẵn vô thời hạn do giấy phép mã nguồn mở, người dùng đã bắt đầu khám phá các lựa chọn thay thế như mimalloc và tcmalloc cho các dự án tương lai. Một số nhà phát triển đang kêu gọi một bản phát hành 6.0 cuối cùng với các cài đặt mặc định hiện đại hóa trước khi dự án được lưu trữ hoàn toàn.

Các Bộ Cấp Phát Bộ Nhớ Thay Thế

  • mimalloc: Gần đây được CPython áp dụng, hiệu suất tương đương với jemalloc
  • tcmalloc: Bộ cấp phát hiệu suất cao của Google, yêu cầu hệ thống build Bazel
  • snmalloc: Giải pháp thay thế mới nổi được cộng đồng đề cập
  • glibc malloc: Bộ cấp phát hệ thống tiêu chuẩn với hiệu suất thấp hơn

Nhìn về phía trước

Mặc dù đã kết thúc, tác động của jemalloc đối với công nghệ cấp phát bộ nhớ không thể phủ nhận. Hiện tại nó phục vụ như bộ cấp phát mặc định trên FreeBSD và cung cấp năng lượng cho cơ sở hạ tầng quan trọng của vô số ứng dụng, từ cơ sở dữ liệu Redis đến máy chủ Ruby on Rails. Ảnh hưởng của dự án mở rộng ra ngoài việc sử dụng trực tiếp, đã truyền cảm hứng cho nhiều bộ cấp phát bộ nhớ khác và đóng góp nghiên cứu có giá trị cho lĩnh vực này.

Sự kết thúc phát triển jemalloc làm nổi bật những thách thức rộng lớn hơn trong việc duy trì các dự án cơ sở hạ tầng mã nguồn mở. Trong khi phần mềm sẽ tiếp tục hoạt động như hiện tại, việc thiếu phát triển liên tục có nghĩa là nó có thể dần trở nên kém tối ưu hơn khi môi trường phần cứng và phần mềm phát triển. Hiện tại, người dùng hiện có có thể tiếp tục dựa vào hiệu suất đã được chứng minh của jemalloc, trong khi các dự án mới có thể cần xem xét các lựa chọn thay thế mới nổi trong bối cảnh cấp phát bộ nhớ.

Tham khảo: jemalloc Postmortem