Bối cảnh và Đề cương giải pháp
Điều này hơi dài, nhưng vấn đề là giáo dục thông qua phần Hướng dẫn chi tiết. Nếu bạn đã được giáo dục, chỉ cần đọc phần này và có thể kết luận ;-)
Tôi đã sử dụng Synergy trên Linux và Windows dưới nhiều hình thức khác nhau từ những năm 1990 và câu hỏi này xuất hiện thường xuyên. Có hai nguyên nhân phổ biến, và tôi chỉ giải quyết ở đây.
Nói chung, đây là một vấn đề ở cấp độ hệ điều hành, là ưu tiên lịch trình của máy khách, vì vậy giải pháp chỉ đơn giản là tăng mức độ ưu tiên của máy khách. Điều đó sẽ cải thiện vấn đề, nhưng trải nghiệm tổng thể vẫn sẽ dựa trên quan điểm của người lên lịch về tầm quan trọng của việc cập nhật màn hình, v.v. Xem ở phần cuối để biết thêm về điều đó.
Đôi khi có một lý do khác: một hoặc cả hai quá trình máy chủ hoặc máy khách chết và được khởi động lại, trong trường hợp đó bạn nên kích hoạt ghi nhật ký mức gỡ lỗi trên máy chủ và máy khách Synergy và lấy nó từ đó. Khi bạn đã giải quyết rằng , thực hiện ở trên.
Hướng dẫn chi tiết
Tăng mức độ ưu tiên của trình lập lịch trình máy khách Windows
Sử dụng Windows 7, tôi không biết các cách rút gọn trong các phiên bản mới hơn.
Mở Trình quản lý tác vụ (Ctrl-Alt-Esc) và nhấp vào tab Quy trình.
Nhấp chuột phải vào synergy.exe, nhấp vào "Đặt mức độ ưu tiên" và chọn Cao hoặc Thời gian thực.
Lặp lại cho synergyc.exe.
Nếu máy chủ Synergy quá chậm, quy trình của nó là synergys.exe.
Tăng mức độ ưu tiên của trình lập lịch trình máy khách Linux
Một cái gì đó tương tự sẽ hoạt động trên Mac. Bạn có thể biết cách thực hiện điều này trong GUI, nhưng tôi sử dụng dòng lệnh. Trừ khi bạn thực hiện các thao tác sau dưới dạng root ( sudo su -
), bạn sẽ phải chơi xung quanh (với quyền root) visudo
và thiết lập các quyền liên quan để sử dụng renice
.
ps -eo pid,ni,cmd |\
grep synergy |\
grep -v grep |\
cut -d" " -f2 |\
while read pid; do echo -n $pid" "; done |\
xargs renice -19
Bạn có thể sao chép và dán ở trên hoặc đặt nó trên một dòng bằng cách xóa tất cả các \
ký tự ngắt dòng. Nếu bạn muốn xem những gì sẽ được chạy mà không thực sự làm điều đó, hãy thay đổi lệnh cuối cùng thành xargs echo renice -19
.
Như đã nêu ở trên, đây vẫn là theo quan điểm của người lập lịch về tầm quan trọng của nhiều quy trình khác. Nếu bạn muốn tìm hiểu một chút, bạn có thể làm như sau.
Xem các quy trình của Windows
Mở Trình quản lý tác vụ. Trong tab Quy trình, nhấp vào nút "Hiển thị quy trình từ tất cả người dùng". Sau đó nhấp vào menu Xem và vào "Chọn Cột ...". Đảm bảo chỉ đánh dấu các mục sau: Tên người dùng, Sử dụng CPU, Thời gian CPU, Ưu tiên cơ sở, Dòng lệnh. Bạn có thể nhấp vào Mô tả là tốt nếu bạn muốn.
Bạn có thể kéo cửa sổ cũng như các cột lớn hơn để dễ đọc. Nhấp vào tiêu đề cột để sắp xếp theo nó. Bạn cũng có thể nhấp chuột phải vào tên hình ảnh và, ví dụ, đi đến các dịch vụ liên quan. Điều này rất hữu ích cho các tên hình ảnh nhạt nhẽo như svchost.exe. Nếu bạn muốn có một công cụ thực sự mạnh để chơi (hãy cẩn thận!), Hãy thử ProcessHacker .
Xem các quy trình Linux
Chạy ps -eo pid,ni,cmd | less
để xem tất cả các quy trình đang chạy. Mỗi dòng đại diện cho một trạng thái quy trình và các cột là: ID tiến trình, mức độ ưu tiên của nó và dòng lệnh được đề cập. Một vấn đề là trong Unix, giá trị đẹp càng thấp thì mức độ ưu tiên càng cao.
Phần kết luận
Vấn đề là Synergy phụ thuộc vào rất nhiều quy trình khác để thực hiện một phần công việc của mình (chẳng hạn như xử lý SSL trong Pro) và mỗi quy trình này đều được ưu tiên gán cho bộ lập lịch của hệ điều hành. Do đó, thực sự không có giải pháp đơn giản.
Ngay cả sau khi áp dụng "sửa chữa" được đề cập ở trên, mọi thứ thường chậm sau khi vào màn hình máy khách mà bạn chưa từng ở đó và đó là do cả gia đình của các quy trình này được đưa vào trình ghi lại lịch trình, do đó nói. Hầu hết các trình lập lịch ngày nay là thích ứng và giảm mức độ ưu tiên của các quy trình người dùng đã không hoạt động trong một thời gian. Để bộ lập lịch xem chúng là quan trọng một lần nữa yêu cầu tiếp tục sử dụng trong một thời gian, chẳng hạn như di chuyển chuột xung quanh rất nhiều sau khi bạn vào màn hình. Đó là một nỗi đau, nhưng đó là cách các bộ lập lịch hệ điều hành hoạt động trong các hệ điều hành không theo thời gian thực.
Có nhiều cách để điều chỉnh điều đó, nhưng nó rất cụ thể đối với từng HĐH (thậm chí các bản phát hành khác nhau) và dễ vỡ (đọc: dễ dàng phá vỡ các bản vá của HĐH). Không cần nhìn vào mã, tôi hy vọng Nick & team sẽ chỉ thực sự giải quyết điều này bằng cách đẩy Synergy xuống cấp trình điều khiển kernel, điều này sẽ khiến nó trở nên dễ vỡ hơn và gây ra sự tăng giá đáng kể.