Lệnh lscpu trong Linux dùng để hiển thị chi tiết thông tin về kiến trúc CPU trên hệ thống, như số CPU, số nhân, luồng, socket, NUMA node và thông tin bộ nhớ đệm. Trong bài viết này, mình sẽ hướng dẫn cách sử dụng lscpu để thu thập thông tin về số lượng nhân, luồng, bộ nhớ đệm,… của CPU chính xác và chi tiết nhất.
Những điểm chính
- Khái niệm: Biết được lscpu là gì và cách công cụ này tổng hợp dữ liệu từ hệ thống để hiển thị kiến trúc CPU một cách trực quan, dễ hiểu.
- Ứng dụng: Nắm rõ các trường hợp cần sử dụng lscpu để hoạch định tài nguyên, kiểm tra khả năng ảo hóa và tối ưu hóa hiệu suất cho máy chủ.
- Cách sử dụng: Thành thạo các cú pháp lệnh để tra cứu nhanh số nhân, số luồng, bộ nhớ đệm và các tập lệnh xử lý đặc biệt.
- Khắc phục lỗi: Biết cách xử lý lỗi “command not found” và quy trình kích hoạt ảo hóa trong BIOS/UEFI để kernel nhận diện đúng thông số.
- Câu hỏi thường gặp: Giải đáp các thắc phổ biến liên quan đến lệnh lscpu.
lscpu là gì?
lscpu (List CPU Information) là lệnh được sử dụng để truy xuất và hiển thị thông tin tổng quan về kiến trúc CPU đang vận hành hệ thống. Cơ chế hoạt động của lệnh này là thu thập dữ liệu thô từ hệ thống file ảo /sys/devices/system/cpu và file /proc/cpuinfo, sau đó tổng hợp và trình bày lại dưới định dạng dễ đọc cho dùng. Kết quả đầu ra của lscpu cung cấp các thông số kỹ thuật quan trọng giúp đánh giá năng lực xử lý của máy chủ, bao gồm:
- Kiến trúc phần cứng: Xác định loại kiến trúc CPU.
- Cấu trúc tô-pô: Chi tiết về số lượng socket, số nhân trên mỗi socket và số luồng trên mỗi nhân.
- Tài nguyên bộ nhớ đệm: Dung lượng chi tiết của các cấp độ Cache (L1, L2, L3), đây là yếu tố ảnh hưởng trực tiếp đến hiệu năng xử lý.
- Tính năng mở rộng: Các cờ hiệu (flags) cho biết khả năng hỗ trợ ảo hóa và các tập lệnh xử lý đặc biệt.

Khi nào cần sử dụng lệnh lscpu?
Dưới đây là các trường hợp phổ biến cần sử dụng lệnh lscpu:
- Thay thế phân tích thủ công: Đây là giải pháp tối ưu nhất để tra cứu cấu hình CPU, giúp loại bỏ sự phức tạp và rủi ro nhầm lẫn khi phải đọc trực tiếp tập tin thô /proc/cpuinfo.
- Hoạch định tài nguyên hệ thống: lscpu cung cấp thông tin chính xác về số lượng nhân và luồng thực tế, giúp bạn đánh giá xem máy chủ có đủ năng lực xử lý cho các tác vụ tải cao hay không.
- Kiểm tra tương thích ảo hóa: Lệnh lscpu xác minh xem bộ vi xử lý có hỗ trợ các công nghệ ảo hóa phần cứng hay không. Đây là bước bắt buộc trước khi triển khai các nền tảng như KVM, VMware vSphere hay Proxmox.
- Tối ưu hóa hiệu năng ứng dụng: Để hiển thị chi tiết về dung lượng bộ nhớ đệm và cấu trúc NUMA nodes, lscpu hỗ trợ việc tinh chỉnh ứng dụng để khai thác tối đa sức mạnh phần cứng.

Cách sử dụng lệnh lscpu chi tiết
1. Xem thông tin CPU cơ bản
Để xem tổng quan cấu hình CPU và thị bản tóm tắt các thông số kỹ thuật quan trọng nhất của CPU, bạn sử dụng lệnh sau:
lscpu
Giải thích các thông số:
- Architecture: Kiến trúc của CPU.
- CPU(s): Tổng số CPU hiện có sẵn cho hệ điều hành sử dụng.
- Core(s) per socket: Số nhân vật lý trên mỗi chip CPU.
- Thread(s) per core: Số luồng trên mỗi nhân.
- Model name: Tên thương mại đầy đủ của dòng CPU.
- Vendor ID: Mã định danh nhà sản xuất.
2. Chỉ hiển thị các thông số cụ thể
Để chỉ trích xuất thông tin của một trường dữ liệu cụ thể mà bạn quan tâm để phục vụ báo cáo hoặc xử lý dữ liệu, bạn hãy sử dụng lệnh dưới đây:
lscpu --extended=CPU,CORE,SOCKET,NODE
Tùy chọn --extended cho phép bạn lựa chọn và sắp xếp các cột hiển thị, rất hữu ích khi bạn cần thông tin ở định dạng có cấu trúc để viết script.
3. Kiểm tra thông tin bộ nhớ đệm chi tiết
Để lọc riêng thông tin về chi tiết kích thước và phân cấp của các lớp bộ nhớ đệm, bạn kết hợp lệnh lscpu với grep như sau:
lscpu | grep "Cache"
Các thông tin về cache như L1d cache, L2 cache, L3 cache,… sẽ giúp bạn đánh giá hiệu suất truy xuất dữ liệu của CPU, điều này cần thiết đối với các ứng dụng đòi hỏi tốc độ xử lý cao.
4. Kiểm tra khả năng hỗ trợ ảo hóa và các cờ lệnh (Flags)
Để kiểm tra thông tin ảo hóa và các cờ lệnh, bạn chạy lần lượt các lệnh sau:
lscpu | grep "Virtualization"
lscpu | grep "Flags"
Giải thích:
- Dòng Virtualization sẽ cho biết hệ thống hỗ trợ loại công nghệ ảo hóa nào, ví dụ như
VT-xcho Intel hoặcAMD-Vcho AMD. - Dòng Flags liệt kê tất cả các tập lệnh được hỗ trợ. Sự xuất hiện của các cờ quan trọng như
vmx(Intel) hoặcsvm(AMD) là dấu hiệu xác nhận khả năng chạy máy ảo của CPU.
Cách khắc phục lỗi phổ biến khi thực thi lscpu
1. Lỗi: “lscpu: command not found”
Nguyên nhân của lỗi “lscpu: command not found” là hệ thống chưa có chương trình lscpu, cụ thể là gói tiện ích util-linux chưa được cài đặt. Để xử lý, bạn cần cài đặt gói util-linux thông qua trình quản lý gói của hệ thống:
- Đối với Ubuntu/Debian/Kali Linux:
sudo apt update && sudo apt install util-linux- Đối với CentOS/RHEL/AlmaLinux:
sudo yum install util-linux- Đối với Alpine Linux:
apk add util-linux2. Mục Virtualization không hiển thị hoặc báo sai trạng thái
Nếu CPU có hỗ trợ ảo hóa nhưng khi chạy lscpu thì dòng Virtualization không hiển thị hoặc hiển thị sai thì nguyên nhân có thể do tính năng ảo hóa đang bị tắt ở BIOS/UEFI, nên kernel Linux không nhận ra và không thể sử dụng tập lệnh ảo hóa dù CPU thực sự hỗ trợ.
Quy trình khắc phục:
- Truy cập BIOS/UEFI: Bạn khởi động lại máy chủ và nhấn phím chức năng (thường là F2, F10, Del hoặc Esc) để vào trình cài đặt BIOS.
- Tìm thiết lập CPU: Bạn điều hướng đến các mục như Processor, Chipset hoặc Advanced CPU Configuration.
- Kích hoạt tính năng: Tiếp theo bạn tìm dòng chữ Intel Virtualization Technology (VT-x) hoặc SVM Mode (đối với AMD) và chuyển trạng thái sang Enabled.
- Lưu và khởi động lại: Sau đó bạn nhấn F10 để lưu cấu hình và boot vào lại Linux.
- Kiểm tra lại: Cuối cùng, bạn chạy
lscpuvà tìm dòngVirtualization: VT-x(hoặc AMD-V) để xác nhận thành công.

Theo kinh nghiệm cá nhân của mình, lỗi “command not found” gần như rất hiếm gặp trên các bản phân phối phổ biến như Ubuntu hay CentOS vì util-linux thường được cài sẵn từ đầu. Trường hợp mình thực sự gặp lỗi này chủ yếu là khi làm việc với các container Docker dùng image tối giản (minimal) hoặc trên Alpine Linux, những môi trường cắt bớt gói mặc định để giảm dung lượng.
Còn với lỗi thiếu thông tin Virtualization, mình từng mất khá nhiều thời gian debug trên một máy chủ Dell PowerEdge trước khi nhận ra nguyên nhân đơn giản chỉ là VT-x bị tắt trong BIOS. Vì vậy, lời khuyên của mình là: mỗi khi triển khai máy chủ mới cho mục đích ảo hóa, hãy luôn kiểm tra BIOS trước tiên thay vì đi tìm lỗi ở phía phần mềm, điều này sẽ giúp bạn tiết kiệm rất nhiều thời gian.
Câu hỏi thường gặp
Sự khác biệt giữa Socket, Core và Thread trong kết quả lscpu là gì?
Các thông số này đại diện cho cấu trúc vật lý và luận lý của bộ vi xử lý:
– Socket: Số lượng chip CPU vật lý được cắm trên bo mạch chủ.
– Core: Số lượng nhân vật lý thực tế nằm bên trong mỗi chip CPU.
– Thread: Số lượng luồng xử lý trên mỗi nhân.
Làm thế nào để biết lệnh lscpu đã trả về kết quả chính xác?
Sau khi thực thi lệnh lscpu, bạn hãy kiểm tra dòng Model name để xác nhận tên CPU đã được hệ thống hiển thị chính xác. Ngoài ra, bạn cần đảm bảo rằng chỉ số CPU(s) (tổng số luồng) khớp với kết quả của phép tính nhân giữa: Socket(s) x Core(s) per socket x Thread(s) per core.
Tại sao chỉ số BogoMIPS trong kết quả lscpu lại quan trọng?
Chỉ số BogoMIPS là một phép đo tốc độ CPU sơ bộ được nhân Linux thực hiện lúc khởi động. Mặc dù BogoMIPS không phản ánh chính xác hiệu suất xử lý thực tế của các ứng dụng, nhưng thông số này giúp hệ thống ước tính các khoảng thời gian chờ trong quá trình vận hành.
Bằng cách sử dụng lệnh lscpu, bạn đã có thể dễ dàng thu thập và phân tích các thông số kỹ thuật cốt lõi của CPU trên hệ thống Linux. Việc nắm vững cấu hình về số nhân, số luồng và các tính năng hỗ trợ ảo hóa là bước đầu tiên và quan trọng nhất để đưa ra các quyết định tối ưu hóa hiệu suất cũng như quản lý tài nguyên máy chủ hiệu quả.




