Một năm được tài trợ cho việc phát triển FreeBSD
(daemonology.net)- Được Amazon tài trợ để thực hiện kỹ thuật phát hành FreeBSD và phát triển FreeBSD/EC2 trong 1 năm
- Song song với quản lý phát hành và các cải tiến liên quan đến EC2, trung bình dành khoảng 50 giờ làm việc mỗi tháng
- Đạt được các cải thiện quan trọng về tính năng và chất lượng như quản lý nguồn cho instance Graviton, hỗ trợ hotplug và cải thiện hiệu năng khởi động
- Mở rộng các loại AMI và tự động hóa quy trình build để tăng tính đa dạng và hiệu quả trong việc phân phối FreeBSD AMI
- Sau khi tài trợ kết thúc, dự kiến tốc độ phát triển sẽ chậm lại và một số tính năng có thể bị đình trệ
Nhìn lại một năm tài trợ cho phát triển FreeBSD
# Bối cảnh khởi đầu và quá trình tài trợ
- Đã quản lý nền tảng FreeBSD/EC2 từ năm 2010, đồng thời đảm nhiệm vai trò lead kỹ thuật phát hành FreeBSD từ tháng 11 năm 2023
- Trước đó có nhận tài trợ nhỏ lẻ từ Antithesis, Patreon..., nhưng công việc kỹ thuật phát hành đã chiếm đáng kể thời gian dành cho phát triển FreeBSD/EC2
- Đã trao đổi với phía Amazon trong nhiều năm về việc tài trợ cho công việc EC2, và đến tháng 4 năm 2024 thì được kết nối với người phụ trách ngân sách để nhận tài trợ trong 1 năm
- Khoản tài trợ được thực hiện qua GitHub Sponsors; thời hạn Amazon dự định và thời điểm tiền thực tế được chuyển có thể không trùng nhau
# Phân bổ tài trợ và thời gian làm việc
- Theo yêu cầu của Amazon, cam kết cung cấp 40 giờ mỗi tháng cho công việc kỹ thuật phát hành FreeBSD và phát triển EC2
- Thực tế đã dành khoảng 50 giờ mỗi tháng, phân bổ 20 giờ cho các vấn đề EC2, 20 giờ cho công việc phát hành và 10 giờ cho các hạng mục kỹ thuật khác
- Thời lượng công việc biến động khá lớn theo từng tháng
# Quản lý phát hành FreeBSD
- Trong khi đưa vào và quản lý lịch phát hành theo quý của FreeBSD, đã thực hiện 4 đợt phát hành trong 1 năm: FreeBSD 13.4 (2024.9), 14.2 (2024.12), 13.5 (2025.3), 14.3 (dự kiến 2025.6)
- Mỗi lần phát hành bao gồm việc thúc đẩy đóng băng mã nguồn của lập trình viên, phê duyệt và điều phối yêu cầu merge, build và kiểm thử image, soạn thông báo, cũng như sửa nhiều lỗi build phát hành khác nhau
- Thời gian dành cho kỹ thuật phát hành dao động từ 33.5 đến 79 giờ mỗi quý, và có xu hướng giảm dần về sau khi quy trình ổn định hơn
# Cải tiến tính năng EC2 chủ chốt và nâng cao chất lượng
Driver nguồn cho instance Graviton, hỗ trợ hotplug
-
Đã khắc phục vấn đề FreeBSD không nhận biết được tín hiệu tắt máy bình thường từ EC2 API trên các instance Graviton
- Sử dụng đối tượng ACPI _AEI để kết nối tín hiệu "power button" dựa trên GPIO với logic của driver
- Vấn đề thiết bị bị vô hiệu hóa do không khớp thiết lập cờ Pull Up trong bảng ACPI do EC2 cung cấp được xử lý bằng cách thêm thiết lập ACPI_Q_AEI_NOPULL vào FreeBSD/EC2 AMI
-
Đã chẩn đoán và sửa một loạt vấn đề hotplug thiết bị (đặc biệt là hot-unplug) trên các instance EC2 Graviton và x86
- Xử lý nhiều loại lỗi khác nhau như rò rỉ IRQ, trạng thái nguồn PCI không khớp với tín hiệu từ OS, các thiết bị PCI "ma", v.v.
- Tạm thời áp dụng các ACPI quirk như ACPI_Q_CLEAR_PME_ON_DETACH, ACPI_Q_DELAY_BEFORE_EJECT_RESCAN; các lỗi phía EC2 dự kiến sẽ được sửa riêng
Tự động hóa kiểm thử hotplug và cải thiện chất lượng
- Đã phát triển script lặp đi lặp lại việc gắn và tháo EBS volume trong môi trường EC2, đồng thời xác minh độ ổn định qua 300 lần kiểm thử liên tiếp
- Cải thiện chất lượng bằng cách đặt độ trễ 5 giây không cần thiết của PCIe hotplug (chỉ có ý nghĩa trên hệ thống vật lý) về 0 giây trong EC2
Cải thiện hiệu năng khởi động
- Đã cải thiện một cách có hệ thống các vấn đề về tốc độ khởi động của FreeBSD/EC2 thông qua thu thập và phân tích dữ liệu
- Lần lượt giải quyết các vấn đề như việc tăng dung lượng đĩa root đầu năm 2024 làm thời gian khởi động chậm gấp 3, độ trễ khi seed entropy cho kernel trên instance Graviton2, thời gian khởi động ZFS tăng lên, và vấn đề hỗ trợ IPv6 liên quan đến IMDSv2
- Tối ưu trên nhiều mặt như chênh lệch hiệu năng khởi động theo từng filesystem, sự kém hiệu quả trong việc cấp entropy, và độ trễ khi khởi tạo mạng
# Mở rộng sự đa dạng của FreeBSD AMI và tự động hóa build/phân phối
- Ngoài các AMI base và cloud-init hiện có, đã bổ sung small AMI (loại bỏ mã/công cụ debug và test không cần thiết, dung lượng 1GB) và builder AMI (dành cho người dùng tùy biến để build)
- Khi tổ hợp image được mở rộng thành 4 loại AMI * 2 filesystem (UFS/ZFS) * 2 kiến trúc (amd64/arm64) * 3 phiên bản (13, 14, 15), đã tiến hành tự động xóa image cũ và script hóa quy trình, đồng thời dọn dẹp 336TB snapshot EBS
# Các cải tiến kỹ thuật tổng quát
- Nhờ song song hóa việc build FreeBSD AMI/phát hành, đã rút ngắn tổng thời gian build từ khoảng 22 giờ xuống còn 13 giờ, tạo dư địa để bổ sung thêm nhiều loại AMI hơn
- Thông qua kiểm thử tự động dựa trên instance EC2 và so sánh bằng diffoscope, đã chẩn đoán và xử lý các vấn đề về khả năng tái lập bản dựng (reproducible build)
- Đồng thời thực hiện nhiều công việc nhỏ khác như review patch driver ENA, build OCI container và upload lên registry, cải tiến công cụ liên quan đến AWS, báo cáo vấn đề bảo mật, v.v.
# Triển vọng sắp tới và giới hạn
- Vẫn sẽ tiếp tục đảm nhiệm vai trò kỹ thuật phát hành FreeBSD và duy trì nền tảng EC2, nhưng thời gian có thể dành ra sẽ ít hơn trước
- Các bản phát hành FreeBSD 15.0 (2024.12), 14.4/15.1/14.5/15.2 (2026) vẫn sẽ được tiến hành theo kế hoạch, nhưng tốc độ bổ sung tính năng và sửa lỗi có thể sẽ chậm lại
- Các hạng mục còn dang dở như mở rộng filesystem tự động, tự động hóa đa NIC và hotplug, phân phối AMI đã vá sẵn, công cụ web cho người dùng EC2, hỗ trợ FreeBSD/Firecracker... được dự báo sẽ đình trệ trong dài hạn
# Lời kết
- Khoản tài trợ nói trên từ Amazon là cơ hội cực kỳ hiếm có đối với một nhà phát triển mã nguồn mở, và tác giả cảm thấy tự hào cũng như biết ơn về những thành quả trong thời gian qua
1 bình luận
Ý kiến Hacker News
Hôm nay chia sẻ tin FreeBSD đã được thêm vào trang tải xuống của ziglang.org; giờ người dùng FreeBSD có thể dễ dàng nhận các bản dựng nhánh master được build tự động trong CI.
FreeBSD hiện đã chính thức được hỗ trợ đầy đủ như một mục tiêu cross-compile, có thể biên dịch nhắm tới FreeBSD tương tự Linux như
zig cc -o hello hello.c -target riscv64-freebsd.Nếu có phụ thuộc C/C++, có thể dễ dàng mang vào và build bằng hệ thống build của Zig, nhờ đó ngay cả các dự án khá phức tạp cũng có thể cross-compile sang FreeBSD một cách thuận tiện.
Hy vọng điều này sẽ khiến nhiều dự án hơn bổ sung hỗ trợ và kiểm thử FreeBSD vào CI.
Có nhiều đoạn thú vị khi đọc.
Có trường hợp từ tuần đầu tiên của năm 2024, quá trình khởi động FreeBSD đột nhiên chậm gấp 3 lần; sau khi lần theo các commit liên tục, nguyên nhân hóa ra là kích thước đĩa root tăng từ 5GB lên 6GB.
Khi hỏi một người bạn ở Amazon thì câu trả lời cứ như phép thuật: “Không biết chính xác, nhưng có lẽ cứ không biết thì hơn.”
Điều quan trọng là khi tăng kích thước đĩa root lên 8GB thì hiệu năng đã trở lại mức cũ.
Nghe chuyện này xong lại càng muốn biết rốt cuộc lý do là gì.
Tò mò không biết việc bisect commit để tìm ra kiểu vấn đề này thực tế đã tốn bao nhiêu thời gian.
Cũng tưởng tượng không biết có phải mỗi lần đều tạo image rồi reboot VM hay không.
Nhắc đến bài blog năm 2006 của chính mình rằng giới hạn kích thước object ban đầu của S3 là 5GB.
https://aws.amazon.com/blogs/aws/amazon_s3/
Không rõ điều này có liên quan trực tiếp đến hiện tượng FreeBSD chậm đi hay không.
Cũng đang có rất nhiều việc được tiến hành liên quan đến hỗ trợ laptop.
Đọc được thông tin BSD Foundation đang đầu tư $750,000 để tập trung vào nhiều tính năng như triển khai trạng thái ngủ S0ix.
Có thể xem dự án liên quan tại https://github.com/FreeBSDFoundation/proj-laptop.
Đã hy vọng Amazon hỗ trợ và đóng góp nhiều hơn, nhưng thực tế trông như chỉ dừng ở mức hỗ trợ tối thiểu cho FreeBSD.
Amazon thậm chí cũng không có trong danh sách nhà tài trợ của FreeBSD; năm ngoái Google chỉ tài trợ vỏn vẹn $9K, còn Apple và Meta/Facebook cũng không có.
Ngược lại, Microsoft có tên trong danh sách thì đáng được khen.
Khá bất ngờ khi những tập đoàn lớn này hưởng lợi nhiều từ FreeBSD và OpenBSD mà không tự động quyên góp hằng năm.
Thông tin nhà tài trợ có thể xem tại https://freebsdfoundation.org/our-donors/donors/?donationYear=2024.
Đồng ý rằng mong Amazon hỗ trợ FreeBSD nhiều hơn.
Tuy nhiên, việc không có tên trong danh sách nhà tài trợ của FreeBSD Foundation không có nghĩa là không có hỗ trợ.
Kinh phí phát triển mà bản thân nhận được cũng không đi qua foundation, và trên thực tế phần phát triển do foundation hỗ trợ chỉ chiếm khoảng 10% tổng hỗ trợ từ doanh nghiệp.
Việc foundation tài trợ vẫn rất quan trọng vì cho phép tập trung vào những công việc dành riêng cho chính FreeBSD, nhưng xét tổng thể thì đó chỉ là thiểu số.
Có ý kiến chỉ ra rằng không thể nhìn thấy toàn bộ tình hình chỉ từ nội dung bình luận này.
Nó chỉ cho thấy ảnh chụp theo năm về các khoản quyên góp cho foundation, còn bản thân những đóng góp phát triển thì được tóm tắt trong release note của từng bản phát hành.
https://www.freebsd.org/releases/
Tò mò vì sao Microsoft lại hỗ trợ FreeBSD.
Các phần mở rộng Hyper-V cũng không hoàn chỉnh bằng Linux, không có bản port chính thức của .NET, và cũng không có vẻ Microsoft đang vận hành dịch vụ nào dựa trên FreeBSD.
Có ý kiến cho rằng Amazon là công ty đóng góp ít nhất cho FOSS trong nhóm FAANG.
Bày tỏ sự kính trọng lớn dành cho cperciva.
Tò mò không biết ông ấy quản lý đồng thời Tarsnap và FreeBSD như thế nào.
Có thể tự làm các sửa chữa đơn giản hoặc gọi chuyên gia.
Chỉ một phần thời gian dành cho công việc FreeBSD này là được lấy từ Tarsnap, và con số đó không nhiều như người ta nghĩ.
Từng có kinh nghiệm dùng FreeBSD làm workstation trước đây và thấy rất ấn tượng.
Muốn dùng FreeBSD cho gateway/tường lửa/DNS/DHCP ở nhà, nhưng vì driver NIC 10GbE không được hỗ trợ nên cuối cùng đã chọn Nix.
Thật vui khi thấy FreeBSD vẫn đang được duy trì tốt.
Tò mò ai là những người dùng FreeBSD/EC2 hàng đầu.
Bản thân cũng không rõ.
Trên thực tế, số người dùng liên hệ trực tiếp với mình có lẽ còn chưa tới 0.1% tổng số người dùng FreeBSD/EC2.
Thực sự rất muốn biết ai đang dùng FreeBSD trên EC2.
Tò mò không biết Netflix có chỉ dùng FreeBSD trên các edge box hay không.
Tò mò FreeBSD đang lấp vào ngách nào trong họ Unix.
Hỏi vì sao lại dùng FreeBSD phức tạp hơn OpenBSD hay NetBSD, và nếu cần ZFS, Nvidia hoặc ELF thì liệu Linux có phải lựa chọn tốt hơn không.
Biết vấn đề GNU, nhưng vẫn có những lựa chọn thay thế như Musl Void, nên tò mò chân thành về “bản sắc” riêng của FreeBSD.
Có kinh nghiệm dùng FreeBSD trong lĩnh vực tài chính, cả trên EC2 lẫn máy chủ vật lý tại trung tâm dữ liệu riêng.
Dùng nhiều zfs và jails.
Cho mọi dịch vụ chạy độc lập trong từng jail nên rất hiệu quả về chi phí.
Khi chuyển một phần lên cloud và vận hành hybrid Linux(k8s)+FreeBSD thì chi phí tăng vọt.
Tự quản lý trung tâm dữ liệu thì có những phiền toái như thay ổ đĩa hay xử lý hỏa hoạn, nhưng AWS cung cấp nhiều tính năng như multi-region (đổi lại là chi phí cao).
zfs từng rất hữu ích khi một bảng DB production bị xóa nhầm; nhờ snapshot mà có thể rollback ngay lập tức, và zfs cũng được dùng cho backup.
Cũng từng dùng dtrace trong production để troubleshooting.
Khi chỉ vận hành FreeBSD trên server thì việc quản lý dễ vì chỉ có một họ OS; còn khi đưa Linux vào thì mỗi team lại dùng một distro khác nhau gây hỗn loạn.
Bản thân thích FreeBSD như một cấu trúc tích hợp giữa kernel + OS.
Theo góc nhìn của bản thân, FreeBSD giống như sự pha trộn hợp lý giữa ưu điểm của OpenBSD và NetBSD.
Trước đây FreeBSD nổi bật với tối ưu hóa cho CPU Intel và bảo mật vững chắc, đặc biệt hỗ trợ ZFS là điểm khác biệt mang tính quyết định.
Driver nvidia cũng chỉ mới gần đây mới có hỗ trợ native cho FreeBSD.
Cuối cùng, FreeBSD đang kết hợp tốt các ưu điểm của những BSD khác với độ ổn định phần cứng.
FreeBSD có lượng người dùng lớn hơn rất nhiều so với OpenBSD hay NetBSD.
Danh mục phần mềm cũng phong phú hơn hẳn nên hoàn toàn có thể dùng thường ngày trên desktop.
Lý do không dùng Linux là vì Linux bị ràng buộc quá nhiều vào lợi ích doanh nghiệp.
Có ý kiến rằng FreeBSD nhỉnh hơn Linux về hỗ trợ ZFS.
Nhờ vấn đề giấy phép mà FreeBSD cung cấp môi trường tốt hơn.
FreeBSD vượt OpenBSD về thông lượng mạng.
Nhìn chung các BSD có tốc độ thay đổi chậm hơn nên phù hợp để dùng như một nền tảng tích hợp.
Có ý kiến rằng bài viết này không phác họa môi trường phát triển FreeBSD theo hướng tích cực lắm.
Xét đây là một OS có độ phức tạp cao, cảm giác ít nhất cũng nên có ai đó làm release manager toàn thời gian, vậy mà thực tế chỉ có công việc bán thời gian trong 1 năm thì khá đáng tiếc.
Dù vậy, sự tồn tại của FreeBSD vẫn rất quan trọng vì nó cho thấy Linux không phải là lựa chọn duy nhất.