Thông tin liên hệ
- 036.686.3943
- admin@nguoicodonvn2008.info
Bạn đã từng sao chép hoặc di chuyển hàng chục hoặc hàng trăm gigabyte dữ liệu chưa? Nếu đã thực hiện việc này, bạn chắc chắn nhận thấy rằng hệ thống trở nên ít đáp ứng hơn trong thời gian đó. Trên Linux, bạn có thể tránh điều này với sự trợ giúp của lệnh ionice.
I/O là viết tắt của Input/Output (đầu vào/đầu ra). Có nhiều loại thiết bị I/O, nhưng trong trường hợp này, đó là các thiết bị lưu trữ.
Mỗi tiến trình muốn đọc hoặc ghi dữ liệu vào một thiết bị như vậy được chỉ định một scheduling class và số ưu tiên (hay giá trị “nice”). Điều này áp dụng trên Linux đối với các hệ thống file như ext4. Các hệ thống file khác, chẳng hạn như ZFS, có thể thực hiện các phương pháp hơi khác nhau để lên lịch cho các hoạt động đọc/ghi trên ổ đĩa. Ngoài ra, trình lập lịch CFQ nên được kích hoạt để làm việc này. Bạn có thể kiểm tra với:
cat /sys/block/*/queue/scheduler
Một tiến trình với giá trị “nice” cao có mức độ ưu tiên thấp hơn.
Một thiết bị lưu trữ rõ ràng có số lượng hoạt động I/O giới hạn mà nó có thể thực hiện mỗi giây (IOPS). Vì vậy, khi hai tiến trình muốn đọc/ghi cùng một lúc, mỗi tiến trình sẽ nhận được một phần IOPS. Nếu chúng có cùng mức độ ưu tiên, mỗi tiến trình sẽ nhận được khoảng 50% IOPS.

Nhưng IOPS có vẻ trừu tượng và phức tạp. Để đơn giản, bạn chỉ cần nghĩ về kết quả cuối cùng: Tốc độ đọc/ghi. Giả sử ổ đĩa có thể ghi với tốc độ tối đa 100MB/s. Tiến trình A bắt đầu một thao tác ghi. Nó ghi vào ổ đĩa với tốc độ 100MB/s. Tiến trình B xuất hiện và muốn ghi vào cùng một ổ đĩa. Nó sẽ ghi với tốc độ khoảng 50MB/s, đồng thời đưa tốc độ ghi của tiến trình A về cùng giá trị, 50MB/s. Bây giờ, nếu bạn gán cho tiến trình B một giá trị nice I/O cao hơn, nó sẽ ghi với tốc độ 20MB/s và để cho tiến trình A ghi với tốc độ 80MB/s. Khi tiến trình A hoàn thành, tiến trình B sẽ bắt đầu ghi với tốc độ 100MB/s.
Ví dụ này rất hữu ích để hiểu điều gì đó có thể gây nhầm lẫn cho một số người. Nếu một tiến trình có mức độ ưu tiên rất thấp (giá trị nice cao), thì không có nghĩa là tiến trình đó sẽ ghi chậm mọi lúc. Nếu đó là tiến trình duy nhất sử dụng ổ đĩa, nó sẽ đọc/ghi với tốc độ tối đa. Nhưng khi các tiến trình khác cần ổ đĩa, nó sẽ tạm thời thoát ra và cho phép những tiến trình đó sử dụng nhiều băng thông ổ đĩa hơn. Đối với một hoạt động sao chép/ghi có thể mất hàng giờ để hoàn thành, việc gán cho nó một mức ưu tiên thấp là ý tưởng hay, nếu bạn muốn sử dụng máy tính của mình trong thời gian đó.
Cú pháp chung của lệnh là:
ionice -c scheduling_class -n priority_nice_value command
Idle (class 3): Các tiến trình trong class (lớp) này chỉ đọc/ghi khi không có chương trình nào khác cần truy cập ổ đĩa. Điều này có nghĩa là quá trình đọc/ghi chỉ ở tốc độ tối đa khi nó không bị cạnh tranh. Khi một chương trình khác cần ổ đĩa, tiến trình trong class Idle sẽ chỉ đọc/ghi với bất kỳ tài nguyên nào còn lại. Từ 100MB/s, nó có thể tạm thời ghi với tốc độ 5MB/s, sau đó quay lại 100MB/s khi chương trình khác hoàn thành việc truy cập vào ổ đĩa. Đây là class hoàn hảo cho các công việc dài hạn mà bạn không muốn làm chậm hệ thống của mình. Không có mức ưu tiên nào cần phải chỉ định cho class này.
Lệnh ví dụ:
ionice -c 3 cp /home/user/largefile /Backups
Best-effort (class 2): Có mức ưu tiên/giá trị nice trong khoảng từ 0 đến 7. Hãy nhớ rằng, số thấp hơn có nghĩa là mức độ ưu tiên cao hơn. Hãy sử dụng class này khi bạn muốn tinh chỉnh thời gian truy cập ổ đĩa cho hai hoặc nhiều tiến trình.
Ví dụ, bạn muốn quá trình sao lưu của mình hoàn thành nhanh hơn và gán cho nó giá trị nice là 0. Đồng thời, bạn cũng đang chuyển 6 bộ phim sang ổ đĩa khác nhưng không vội, vậy hãy chỉ định giá trị nice cho tiến trình này là 7.
Lệnh ví dụ:
ionice -c 2 -n 0 backup_command

Realtime (class 1): Chỉ nên sử dụng nếu việc tiến trình nên được ghi càng sớm càng tốt và không bị gián đoạn bởi bất kỳ chương trình nào khác rất quan trọng. Hầu hết người dùng sẽ không bao giờ cần điều này và nên tránh sử dụng, trừ trường hợp đặc biệt. Class này cũng hỗ trợ các giá trị nice trong khoảng từ 0 đến 7. Chỉ root mới có thể sử dụng class này. Điều đó có nghĩa là bạn sẽ phải thêm tiền tố sudo vào lệnh.
Lưu ý rằng một tiến trình trong class Realtime có mức độ ưu tiên 0 có thể ngăn cản các tiến trình tài nguyên khác. Về mặt thực tế, điều đó có nghĩa là chương trình khác có thể phải chờ vài phút hoặc thậm chí hàng giờ để hoàn thành việc ghi/đọc một vài megabyte dữ liệu. Hãy sử dụng class này cẩn thận, chỉ khi bạn chắc chắn mình cần đến nó. Nếu một tiến trình quan trọng trong class 2 hoặc 3 cần truy cập ổ đĩa, hệ thống của bạn có thể đóng băng cho đến khi tiến trình trong class Realtime được ghi xong.
Lệnh ví dụ:
sudo ionice -c 1 -n 7 bash
Trong ví dụ cuối cùng, thay vì chạy lệnh sao chép/di chuyển, shell đã được khởi chạy (Bash). Bây giờ, mỗi lệnh tiếp theo bạn nhập vào shell đó sẽ kế thừa scheduling class I/O và mức độ ưu tiên. Bạn cũng có thể làm điều này trên một giao diện đồ họa.
ionice -c 3 pcmanfm
Lệnh cuối cùng sẽ khởi chạy một file explorer trên môi trường desktop LXDE. Thay thế “pcmanfm” bằng tên của file explorer trong desktop cụ thể của bạn. Bây giờ, tất cả các hoạt động ổ đĩa bắt đầu ở đó sẽ được thực hiện với scheduling class I/O Idle.
Trong các tình huống khác, thao tác sao chép/di chuyển có thể đã hoạt động. Trong trường hợp này, bạn có thể sử dụng ionice theo một cách khác.
ionice -c 3 -p 4910
Điều này thay đổi class ưu tiên của chương trình đang chạy với ID tiến trình 4910. Bạn có thể tìm thấy PID (Process ID - ID tiến trình) với trình quản lý tác vụ của mình hoặc bằng một lệnh chẳng hạn như pgrep.

Lệnh ionice có thể hữu ích trên các desktop mà bạn không muốn bị lag trong khi sao chép/di chuyển các file lớn. Nhưng hãy nhớ rằng ionice cũng có thể hữu ích hơn nữa trên các máy chủ. Bạn chắc chắn không muốn một trang web mà mình host làm khách truy cập gặp phải hiện tượng lag, trong khi thực hiện sao lưu toàn bộ, đúng không?
Chúc bạn thực hiện thành công!
Nguồn tin: Quantrimang.com
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn
Xây dựng agent với Copilot Studio và Agent 365
Prompt tạo ảnh manga đen trắng chuẩn truyện tranh Nhật Bản chỉ với một dòng lệnh
Tạo slideshow bằng Claude AI: Hướng dẫn chi tiết và những prompt bạn cần biết
15 prompt biến ảnh chân dung thành Double Exposure
Cách lưu prompt AI Skills trên Google Chrome
Prompt hỗ trợ báo cáo doanh thu Shopee theo ngày, tuần, tháng
Cách bảo vệ dữ liệu cá nhân trên Meta AI
Hướng dẫn tạo ảnh người mẫu thử đồ ngay trên Canva
Cách xây dựng Knowledge Base mạnh mẽ cho AI và mô hình ngôn ngữ lớn (LLM)
TOP công cụ AI tự động hóa tốt nhất năm 2026
Prompt tạo tranh thủy mặc tối giản phong cách phương Đông
Cách xây dựng thư mục ngữ cảnh thương hiệu cho Claude Code
Hướng dẫn sử dụng Mapify AI tạo sơ đồ tư duy
Copilot hiểu những gì bạn muốn làm, sau đó tự động tạo một topic với các loại node khác nhau và các phản hồi hội thoại. Tổng quan về việc tạo agent dựa trên AI cho thấy cách thức hoạt động của khả năng này. Bạn cũng có thể sử dụng việc tạo agent với
Cách chuyển bộ nhớ chatbot từ và sang ChatGPT
Prompt ChatGPT chỉnh sáng, mịn da, tăng nét và phục hồi ảnh
TOP công cụ AI CRM tự động tốt nhất năm 2026
Hướng dẫn toàn diện về DeepSeek V4: Tính năng, benchmark, so sánh với các đối thủ
Cách tự động sắp xếp các tab bằng AI trên Edge
Cách kết nối Google Calendar với n8n bằng OAuth2 để tự động hóa lịch làm việc