背景とソリューションの概要
これは少し長いですが、要点は「詳細な手順」セクションで説明することです。すでに教育を受けている場合は、このセクションとおそらく結論を読んでください;-)
LinuxとWindowsでSynergyをさまざまな形で1990年代から使用していますが、この質問が頻繁に出てきます。一般的な原因は2つあり、ここでは最初の原因のみを扱います。
これは通常、OSレベルの問題であり、クライアントのスケジューラの優先順位であるため、解決策は単にクライアントの優先順位を上げることです。これで問題は改善されますが、全体的なエクスペリエンスは、画面の更新がどれほど重要であるかについてのスケジューラーの見解に基づいています。詳細については、最後に参照してください。
場合によっては別の理由もあります。サーバーまたはクライアントプロセスの一方または両方が停止して再起動する場合は、Synergyサーバーとクライアントでデバッグレベルのログを有効にして、そこから取得する必要があります。それを解決したら、上記を実装します。
詳細な手順
Windowsクライアントスケジューラの優先度を上げる
Windows 7を使用している場合、新しいバージョンでのショートカットがわかりません。
タスクマネージャを開き(Ctrl-Alt-Esc)、[プロセス]タブをクリックします。
synergy.exeを右クリックし、[優先度を設定]をクリックして、[高]または[リアルタイム]を選択します。
synergyc.exeに対して繰り返します。
Synergyサーバーが遅すぎる場合、そのプロセスはsynergys.exeです。
Linuxクライアントスケジューラの優先度を上げる
Macでも同様のものが動作するはずです。GUIでこれを行う方法を知っているかもしれませんが、私はコマンドラインを使用しています。root(sudo su -
)として次の操作を行わない限り、を使用するために(rootとして)遊んでvisudo
、関連する権限を設定する必要があります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
上記をコピーして貼り付けるか、すべての\
および改行文字を削除して1行に配置できます。実際に実行せずに実行される内容を確認するには、最後のコマンドをに変更しxargs echo renice -19
ます。
上で述べたように、これはまだ他の多くのプロセスの重要性に関するスケジューラーの見解に頼っています。少し学びたい場合は、次のことを行うことができます。
Windowsプロセスの表示
タスクマネージャを開きます。[プロセス]タブで、[すべてのユーザーのプロセスを表示]ボタンをクリックします。次に、[表示]メニューをクリックし、[列の選択...]をクリックします。ユーザー名、CPU使用率、CPU時間、基本優先度、コマンドラインのみがチェックされていることを確認してください。必要に応じて、[説明]をクリックすることもできます。
ウィンドウだけでなく列もドラッグして読みやすくできます。列のヘッダーをクリックして並べ替えます。イメージ名を右クリックして、たとえば、関連するサービスに移動することもできます。これは、svchost.exeなどのブランドイメージ名に役立ちます。本当に強力なツールを操作したい場合は(注意してください!)ProcessHackerを試してください。
Linuxプロセスの確認
実行ps -eo pid,ni,cmd | less
すると、実行中のすべてのプロセスが表示されます。各行はプロセスのステータスを表し、列はプロセスID、その優先度、および問題のコマンドラインです。問題は、Unixではnice値が低いほど優先順位が高くなることです。
結論
問題は、Synergyが他の多くのプロセスに依存して(ProでSSLを処理するなど)作業の一部を実行し、これらの各プロセスにOSスケジューラーによって割り当てられた優先順位があることです。したがって、本当に簡単な解決策はありません。
上記の「修正」を適用した後でも、しばらく前からクライアント画面に入った後、処理が遅くなることがよくあります。これは、このプロセスファミリー全体がスケジューラのバックバーナーに配置されているためです。話す。最近のほとんどのスケジューラは順応性があり、しばらくアイドル状態であったユーザープロセスの優先度を下げます。スケジューラーがそれらを再び重要だと見るためには、画面に入ってからマウスを何度も動かすなど、しばらく使用を続ける必要があります。それは面倒ですが、それがOSスケジューラが非リアルタイムオペレーティングシステムで機能する方法です。
それを微調整する方法はいくつかありますが、それは各OS(異なるリリースであっても)に非常に固有であり、壊れやすい(読み取り:OSパッチで簡単に壊れる)。コードを確認しないと、Nick&チームはSynergyをカーネルドライバーレベルまで下げることによってのみこれを実際に解決し、それによって脆弱性が大幅に高まり、大幅な価格上昇を引き起こすと思います。