web-dev-qa-db-ja.com

相乗効果を使用する場合、それは時々遅れます

更新:Synergy1.9.0でのmacOSwifiラグを修正しました! https://symless.com/forums/topic/2587-download-synergy-190-to-fix-the-wifi-macos-bug/

synergyを使用します。 Linuxデスクトップはサーバーとして機能し、MacBookはクライアントとして接続します。相乗効果を使用している間、それらは両方とも有線接続を使用して、linksysWRT-45GLルーターに接続されます。

Macbookに最初にマウスを合わせると、接続が遅れることがあります。たとえば、マウスを動かしますが、カーソルは2〜3秒間動きません。または、何かを入力します。少しの間表示されません。それは散発的に起こります。通常、Macに切り替えてから最初の1分間程度ですが、必ずしもそうとは限りません。

これを修正するにはどうすればよいですか?

両方のマシンでCPU使用率を確認しようとしましたが、ラグと一致するスパイクは見られませんでした。ボトルネックはネットワークトラフィックにあると思いますが、これを確認する方法や修正する方法がわかりません。

9
David Oneill

2つのデバイスのみが接続されている場合、レイヤー2にすることはできません(MACテーブルがいっぱいになることはありません)。静的ホストマッピングがある場合、それをレイヤー3にすることはできません。それは帯域幅、衝突、およびソフトウェアを残します。 Wiresharkは帯域幅について教えてくれ、衝突を示すこともあります。衝突のログをチェックできる安価なハードウェアを途中にドロップします。次に、アプリケーションに取り掛かります。

3
RobotHumans

私はほんの一秒前に同じ問題を抱えていました、私は他のすべての修正を試しました(私のMac用のイーサネットを除く)。

ホストPC(Windows)で、タスクマネージャー(Ctrl + Shift + Esc)に移動し、上部の[詳細]タブをクリックして、synergy.exesynergyd.exesynergys.exeを検索します。次に、それらを右クリックし、[優先度の設定]サブメニューで[High]を選択します。

3
Dylan Larsen

背景とソリューションの概要

これは少し長いですが、要点は詳細な手順のセクションで教育することです。すでに教育を受けている場合は、このセクションとおそらく結論を読んでください;-)

私は1990年代からLinuxとWindowsでSynergyをさまざまな形で使用してきましたが、この質問は頻繁に出てきます。一般的な原因は2つありますが、ここでは最初の原因のみを扱います。

これは通常、OSレベルの問題であり、クライアントのスケジューラの優先度であるため、解決策は単にクライアントの優先度を上げることです。これで問題は改善されますが、全体的なエクスペリエンスは、画面の更新の重要性などに関するスケジューラーの見解に基づいています。詳細については最後を参照してください。

別の理由がある場合もあります。サーバーまたはクライアントプロセスの一方または両方が停止して再起動する場合は、Synergyサーバーとクライアントでデバッグレベルのログを有効にして、そこから取得する必要があります。 thatが解決したら、上記を実装します。

詳細な手順

Windowsクライアントスケジューラの優先度を上げる

Windows 7を使用しているので、新しいバージョンのショートカットがわかりません。

  1. タスクマネージャー(Ctrl-Alt-Esc)を開き、[プロセス]タブをクリックします。

  2. Synergy.exeを右クリックし、[優先度の設定]をクリックして、[高]または[リアルタイム]を選択します。

  3. Synergyc.exeについて繰り返します。

  4. 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&teamは、Synergyをカーネルドライバーレベルに下げることによってのみこれを実際に解決すると予想します。これにより、コードがはるかに脆弱になり、大幅な価格上昇が発生します。

3
b3ta