CPU ngày nay thường bao gồm một số lõi vật lý. Đây thậm chí có thể là đa luồng để hạt nhân Linux nhìn thấy một số lượng lớn các lõi và do đó bắt đầu nhiều lần lên lịch trình Linux (một cho mỗi lõi). Khi chạy nhiều tác vụ trên một hệ thống Linux, trình lập lịch biểu thường phân phối tốt tổng khối lượng công việc tới tất cả các lõi Linux (có thể là cùng một lõi vật lý).Làm thế nào để (trivially) song song với vỏ Linux bằng cách bắt đầu một nhiệm vụ trên mỗi lõi Linux?
Bây giờ, giả sử, tôi có một số lượng lớn tệp để xử lý với cùng một tệp thực thi. Tôi thường làm điều này bằng lệnh "tìm":
find <path> <option> <exec>
Tuy nhiên, điều này chỉ bắt đầu một tác vụ bất kỳ lúc nào và chờ cho đến khi hoàn thành trước khi bắt đầu công việc tiếp theo. Vì vậy, chỉ một lõi bất kỳ lúc nào được sử dụng cho việc này. Điều này để lại phần lớn các lõi nhàn rỗi (nếu lệnh tìm này là nhiệm vụ duy nhất chạy trên hệ thống). Sẽ tốt hơn nếu khởi chạy N nhiệm vụ cùng một lúc. Trong đó N là số lõi được nhân Linux nhìn thấy.
Có lệnh nào có thể thực hiện điều đó không?
Hãy xem tiện ích song song GNU. Tôi không biết làm thế nào nó phù hợp với vấn đề cụ thể của bạn, nhưng có một đọc: http://www.gnu.org/software/parallel/ –
Có, bạn là đúng. GNU song song thực sự là dành cho việc sử dụng này. Nó có thể được sử dụng như là một thay thế cho "xargs". – ritter
@Daniel: Có vẻ như bạn nên đăng câu trả lời đó. –