Tóm tắt nội dung video
Chào mọi người
Đây là video miễn phí cuối cùng trên kênh nên mình cố gắng nói kĩ, nói sâu và nói rõ nhiều thứ.
Tóm tắt các nội dung chính trong video:
1. Phần này cho các bạn nào muốn học lập trình hệ thống viết bằng C++.
Soi code của Node.js viết bằng C, C++, Python, Javascript, Bash shell và không quên kèm 1 bài tập dành cho các bạn.
Kiểm chứng Javascript engine của Node.js là V8.
Soi phần lập trình bằng C++, Assembly để xài Hugepages bằng cơ chế Transparent HugePages của Node.js.
C++ có cho phép nhúng code C vào bằng từ khóa extern C
Bạn nào muốn làm Software Engineer thì nên coi hết phần 1 để khai phá vài thứ mình mần sương sương như:
- Các thành phần của 1 file nhị phân ELF trên Linux như ELF header, các vùng .text, .rodata, .data.
Ngày xưa thời đi học kiến thức yếu cứ tưởng file nhị phân chỉ chứa mã máy là 1 0 0 1. - Anonymous memory hoặc anonymous mappings hoặc anonymous pages là các vùng nhớ không phải từ filesystem mà nó từ vùng nhớ stack, heap của 1 chương trình chạy trên RAM hoặc từ hàm hệ thống là mmap.
- Cấu trúc bộ nhớ của 1 chương trình chạy trên RAM như heap, stack mà Transparent HugePages chỉ ánh xạ được.
2. Node.js được đóng gói thành 3 phiên bản 18, 20, 22 ở dạng dnf module.
dnf modules và application streams là cải tiến đáng đồng tiền, chén gạo của dnf so với yum.
Cài Node.js được đóng gói sẵn trên AlmaLinux và Ubuntu 24.04 sẽ không xài được Transparent HugePages, lỗi này:
node: Mapping to large pages is not supported.
Nhưng cài Node.js từ chính chủ thì lại xài được cơ chế Transparent HugePages để cấp phát tự động Hugepages.
Oái ăm thay, vì đâu nên nỗi?
Mình quyết định không giải thích phần này và coi như đây là bài tập hổng biết lớn hay nhỏ cho các bạn.
Nghe nói giờ mấy con AI giờ thông minh lắm, giỏi lắm thay thế được lập trình viên òi nên các bạn hỏi nó vụ này xem sao.
3. Coi Node.js xài Hugepages bằng cơ chế Transparent HugePages bằng tham số thp_fault_alloc.
Chú ý là Node.js sẽ không xài trực tiếp các trang nhớ bự chá lửa Hugepages do mình cấp bằng tay nha.
Xài công cụ ab để benchmark web server chạy trên Node.js coi có ăn RAM nhiều không?
4. Giải thích code của 2 chương trình Javascript chạy trên Nodejs, để biết cái nào chạy ăn RAM hơn.
Cái này cho bạn nào muốn học Javascript cơ bản + nhanh gọn lẹ.
Cơm thêm
Transparent HugePages thường viết tắt là THP là cơ chế tự động cấp phát các trang nhớ bự chà bá lửa Hugepages.
Nó giúp mấy ông Linux system administrator sống cuộc đời nhàn hạ hơn vì không phải tính toán hay cấp phát Hugepages bằng tay nữa.
FreeBSD kernel cũng có 1 tham số là vm.pmap.pg_ps_enabled để tự động cấp phát Superpages giống như /sys/kernel/mm/transparent_hugepage/enabled trên Linux.
Hugepages có tên gọi khác là Superpages trên FreeBSD.
Hugepages cũng có tên gọi khác là Largepages trên Windows và VMware cũng hay xài từ này.
Hugepages còn có tên cũ là Big Pages từ thời xửa xưa trên RHEL 2.1.
Lập trình xài Hugepages bằng cơ chế Transparent HugePages bằng cách xài hàm madvise.