Bản thân Redis không cung cấp sự bảo đảm như vậy.
Nếu bạn khởi chạy 4 phiên bản, sẽ có 4 quy trình khác nhau mà hệ điều hành sẽ phải được lên lịch trên 4 lõi. Điều này phụ thuộc vào hệ điều hành để thực hiện cân bằng tải này, tối ưu hóa hiệu suất của hệ thống.
Bây giờ, nếu bạn thực sự muốn liên kết từng cá thể với một lõi cụ thể, hệ điều hành hiện đại thường cung cấp các công cụ để thực thi quá trình trên một lõi CPU cụ thể.
Ví dụ: trên Linux, bạn có thể xem các lệnh taskset và numactl. Trong thực tế, bạn cần phải cẩn thận với điều này, bởi vì một khi bạn khởi chạy Redis trên một lõi cụ thể (thiết lập mặt nạ CPU), tất cả các luồng và các tiến trình con sẽ kế thừa từ mặt nạ CPU này. Vì vậy, khi Redis sẽ cố gắng kích hoạt một nền hoạt động lưu, hoặc một nền AOF viết lại, nó sẽ ảnh hưởng nghiêm trọng đến hiệu suất của trường hợp Redis. Điều này là do thực tế, chuỗi Redis chính sẽ chia sẻ lõi CPU với thao tác nền (thường là tiêu thụ CPU).
Nếu bạn thực sự muốn chơi với CPU ràng buộc (nhưng nó thực sự là một ý tưởng tốt?), Bạn cần phải ràng buộc N Redis trường hợp để lõi N + 1 CPU, giữ một lõi miễn phí cho các hoạt động nền, và chắc chắn nhiều nhất một thao tác nền có thể chạy cùng lúc với các trường hợp này.
Nguồn
2012-08-15 11:02:37
Một câu trả lời khác cho biết điều ngược lại: http://stackoverflow.com/a/36813957/1469954. Lời khuyên nào cần thực hiện? :) – SexyBeast
Câu trả lời khác này thậm chí không liên quan đến việc ràng buộc CPU. Làm thế nào họ có thể thể hiện quan điểm ngược lại? –