Tóm tắt nội dung video
Chào mọi người
Hôm nay mình làm video về tối ưu Oracle database 21c bằng cách xài Linux hugepages.
Về cơ chế của Hugepage thì mình sẽ nói ở 1 video khác vì nó khá dài.
Ngắn gọn là:
CPU thường cấp phát 1 trang nhớ (page) có kích thước là 4 KiB.
Còn trang nhớ bự tổ chảng (huge page) sẽ là 2 MB gấp 512 lần trang nhớ thường.
Xài các trang nhớ hugepage sẽ giúp tăng tốc độ dịch địa chỉ nhớ ảo sang địa chỉ nhớ vật lí do sẽ thường trong bộ nhớ tạm tốc độ cao là TLB (Translation Lookaside Buffer).
Linux hugpage được cấu hình cho các phần mềm, ứng dụng ăn RAM không thương tiếc.
Chú ý là các phần mềm, ứng dụng cũng phải được lập trình thêm để xài hugepage.
Trong video này mình sẽ làm bài LAB từng bước 1, Tây gọi là lab step by step, để chạy Oracle 21c xài được hugepage trên AlmaLinux 8, đáp ứng nhu cầu tăng hiệu suất hoạt động cho Oracle 21c.
Các nội dung chính trong video:
1. Coi Oracle database 21c đang xài cơ chế bộ nhớ nào
Nếu Oracle 21c xài AMM thì MEMORY_TARGET sẽ có giá trị khác 0.
Và rất tiếc là Oracle AMM không xài được hugepages.
Nếu Oracle 21c xài ASMM thì SGA_TARGET, PGA_AGGREGATE_TARGET sẽ có giá trị khác 0.
Và Oracle ASMM xài hugepage ngon lành cành đào.
2. Chỉnh sửa lại hugepages_settings.sh để nhận biết được Linux kernel 4.18 của AlmaLinux 8.10.
Xài hugepages_settings.sh lúc Oracle 21c đang chạy để tính ra được số lượng trang nhớ Huge page cần cấp phát.
3. Bắt buộc Oracle 21c cấp phát bộ nhớ cho SGA, PGA chỉ bằng hugepages.
Tham số use_large_pages=’ONLY’ được ghi xuống spfile để khi khởi động Oracle 21c sẽ đọc nó.
4. Cấp phát số trang bự cành ki nẵng hugepage bằng cách ghi vào /proc/sys/vm/nr_hugepages là cách thường thấy trên mạng.
Tuy nhiên đây không phải là cách hay, vì trên hệ thống các trang nhớ đã được cấp phát và được giải phóng sẽ nằm rời rạc, xa nhau, thường gọi là bị phân mảnh địa chỉ nhớ (memory fragmentation).
Cách tốt nhất để cấp phát huge page là khai báo nó trong bộ tải khởi động GRUB2, và khởi động lại, lúc này hệ điều hành Linux sẽ có 1 dãy địa chỉ nhớ ảo liên tiếp nhau và dễ gom lại thành nhiều trang nhớ bự hugepage.
Cơm thêm
Người ta gọi proc là hệ thống quản lí file ảo (proc virtual filesystem) do nó lấy thông tin hệ thống từ kernel space để người dùng ở user space xài.
Nhưng lại cho người dùng thay đổi giá trị của tham số Linux kernel và ăn luôn vào hệ thống.
Khi đọc thông tin trong proc có thể không phải là thông tin của hệ thống mà do bị người ta thay đổi.
proc cũng có 1 số phần chỉ cho đọc dữ liệu (read only) chứ không cho ghi dữ liệu vào.
5. Khi khởi động Oracle 21c sẽ ghi thông tin xài hugepage vào log là alert_oracle_sid.log
Đọc log này để biết Oracle 21c có xài hugepages thành công không hay có lỗi gì không.