Cú sốc CPU Load 40.0 và bài toán tối ưu Homelab
Đêm qua, mình thức trắng để xử lý một ca khó: Con Router Cisco vIOS trên EVE-NG cứ khởi động được 5 phút là treo cứng. Giao diện web của EVE-NG cũng bắt đầu phản hồi chậm chạp. Kiểm tra top trên Proxmox, mình tá hỏa khi thấy CPU load nhảy vọt lên con số 40.0 dù chỉ mới chạy đúng 3 node Lab.
Vấn đề thực tế không nằm ở RAM hay Disk. Nó nằm ở việc mình quên chưa tối ưu Nested Virtualization (ảo hóa lồng ảo hóa). Trong môi trường Homelab với hơn 12 VM đang chạy, việc nhét thêm một “ông thần” ngốn tài nguyên như EVE-NG mà không nắn chỉnh dòng tiền (tài nguyên) thì hệ thống sập là chuyện sớm muộn.
Tại sao lại là Proxmox + EVE-NG thay vì các lựa chọn khác?
Trước khi gõ lệnh, hãy nhìn vào thực tế các phương án triển khai để hiểu tại sao combo này lại là “chân ái” cho kỹ sư mạng hiện nay.
1. Chạy Bare-metal (Cài trực tiếp lên server)
- Ưu điểm: Hiệu năng tuyệt đối, không bị trễ do tầng trung gian.
- Nhược điểm: Quá lãng phí. Một con server 128GB RAM chỉ để chạy EVE-NG là một tội ác với hóa đơn tiền điện. Bạn cũng không thể snapshot hay backup nhanh toàn bộ OS.
2. VMware Workstation hoặc ESXi
- Ưu điểm: Giao diện quen thuộc, dễ làm quen.
- Nhược điểm: Sau khi Broadcom thâu tóm VMware, vấn đề bản quyền và hỗ trợ phần cứng đời cũ rất hên xui. ESXi nổi tiếng là kén các dòng card mạng (NIC) bình dân.
3. Proxmox VE (KVM)
- Ưu điểm: Hoàn toàn miễn phí, mã nguồn mở và quản lý Web UI rất mượt. Đặc biệt, tính năng backup sang PBS (Proxmox Backup Server) có thể cứu vãn cả tuần làm việc của bạn chỉ trong vài phút.
- Nhược điểm: Mặc định không bật sẵn Nested Virtualization, cần can thiệp thủ công.
Lựa chọn của mình: Proxmox VE. Nó cho phép mình vừa chạy EVE-NG, vừa chạy thêm Windows Server, Linux và Docker để giả lập một hệ thống Enterprise hoàn chỉnh.
Bước 1: Kích hoạt Nested Virtualization trên Proxmox Host
Đây là nút thắt cổ chai lớn nhất. Nếu không bật tính năng này, EVE-NG sẽ chạy ở chế độ mô phỏng (emulation) thay vì tăng tốc phần cứng (acceleration). Các node Cisco hay Juniper sẽ chạy chậm như rùa bò, tốn CPU gấp 5-10 lần bình thường.
Đầu tiên, hãy kiểm tra trạng thái hiện tại qua shell của Proxmox:
# Cho CPU Intel
cat /sys/module/kvm_intel/parameters/nested
# Cho CPU AMD
cat /sys/module/kvm_amd/parameters/nested
Nếu thấy kết quả trả về là N hoặc 0, hãy thực hiện các lệnh sau để mở khóa sức mạnh:
# Với Intel
echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf
# Với AMD
echo "options kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf
# Reboot server để cấu hình có hiệu lực
reboot
Sau khi khởi động lại, lệnh cat sẽ trả về Y hoặc 1. Lúc này, tầng ảo hóa đã sẵn sàng cho lớp tiếp theo.
Bước 2: Cấu hình VM – Đừng dùng CPU mặc định
Sai lầm phổ biến nhất là để CPU Type ở giá trị Default (kvm64). Thiết lập này ẩn đi các tập lệnh tối ưu của CPU thật, khiến VM không thể tận dụng hết hiệu năng.
- CPU Type: Bắt buộc chọn host. Việc này giúp VM nhận diện đầy đủ các flag như VMX/SVM và AES-NI, giúp các tác vụ mã hóa VPN trong Lab nhanh hơn 30%.
- Memory: Nên set RAM cố định thay vì dùng Ballooning. Nếu Lab lớn, việc co giãn RAM liên tục sẽ gây ra hiện tượng lag (jitter) trên các luồng traffic mô phỏng.
- Network: Sử dụng
VirtIO (balanced)để đạt băng thông nội bộ cao nhất giữa các node. - SCSI Controller: Chọn
VirtIO SCSI Singleđể tối ưu hóa hàng đợi I/O cho ổ cứng.
Bước 3: Kiểm tra và tối ưu Disk I/O trong EVE-NG
Sau khi cài đặt xong, hãy SSH vào EVE-NG và chạy lệnh kiểm tra KVM:
/opt/unetlab/wrappers/unl_wrapper -a check
Nếu dòng KVM Acceleration hiện exists, bạn đã thành công 90%. 10% còn lại nằm ở tốc độ đọc ghi đĩa.
EVE-NG ghi log rất nhiều. Nếu dùng SSD, hãy bật tính năng Discard trong file fstab để Proxmox giải phóng các block dữ liệu cũ, tránh làm chậm ổ cứng sau một thời gian dài sử dụng:
# Chỉnh sửa file fstab
nano /etc/fstab
# Thêm 'discard' vào dòng mount root:
UUID=xxx-xxx / ext4 defaults,discard 0 1
Kinh nghiệm thực tế: Thủ thuật CPU Pinning
Trong quá trình vận hành Lab với các node nặng như Firewall Palo Alto hay Checkpoint, mình nhận thấy hiện tượng giật lag nhẹ (micro-stuttering). Nguyên nhân thường do các VM khác trên Proxmox tranh chấp core CPU với EVE-NG.
Nếu sở hữu CPU nhiều nhân (như Xeon E5 hoặc Ryzen 9), bạn nên thử CPU Pinning. Hãy dành riêng một dải core cố định cho EVE-NG để đảm bảo các tiến trình OSPF hay BGP không bị gián đoạn khi bạn đang xem phim trên một VM Plex cùng server.
Sửa file cấu hình VM tại /etc/pve/qemu-server/[VMID].conf và thêm dòng:
cpuset: 0-7
Lời kết từ phòng Lab
Xây dựng Lab mạng không chỉ đơn thuần là cài xong phần mềm. Hiểu rõ tầng ảo hóa bên dưới giúp bạn tiết kiệm hàng giờ debug vô nghĩa. Với Proxmox, bạn có thể snapshot mọi thứ trước khi thực hiện các bài Lab phức tạp. Nếu hệ thống vẫn chậm, hãy kiểm tra Swap. Đừng bao giờ để Lab chạy trên Swap, vì tốc độ ổ cứng không bao giờ đuổi kịp tốc độ của RAM.

