問題タブ [low-latency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
4238 参照

audio - 高速オーディオ入出力

これが私がやりたいことです:

ユーザーが自分のプログラムに (マイク入力を介して) サウンド データを与え、それを 250 ミリ秒保持してから、スピーカーから出力できるようにしたいと考えています。

私はすでに Java Sound API を使用してこれを行っています。問題は、それがちょっと遅いことです。音を鳴らしてからスピーカーから音が出るまで最低でも1~2秒ほどかかりますし、遅延ロジックもまだ実装していません。理論的には遅延はないはずですが、遅延があります。サウンド カードのバッファがいっぱいになるまで待つ必要があることは理解していますが、これにはサンプル サイズとサンプリング レートが関係しています。

私の質問は次のとおりです。これを行うには、Java パスを続行する必要がありますか? 可能であれば、遅延を 100ms 程度に抑えたいと考えています。Java で ASIO ドライバーを使用した経験のある人はいますか? 多分それはより速いです..

また、私は .NET 派です。これは、代わりに .NET を使用する意味がありますか? C++はどうですか?ここで使用する適切なテクノロジを探しています。提案されたテクノロジ プラットフォームを使用してオーディオ入力/出力ストリームを読み書きする方法の良い例かもしれません。ご協力いただきありがとうございます!

0 投票する
4 に答える
1353 参照

java - 低レイテンシーの読み取りと書き込みのための永続化戦略

何百万ものレコードを多かれ少なかれインタラクティブにタグ付けする機能を含むアプリケーションを構築しています。ユーザーの操作は Gmail と非常によく似ており、ユーザーは個々のメールにタグを付けたり、大量のメールに一括タグを付けたりできます。また、これらのタグ メンバーシップへの迅速な読み取りアクセスも必要であり、読み取りパターンは多かれ少なかれランダムです。

現在、Mysql を使用して、タグとドキュメントのペアごとに 1 つの行を挿入しています。数百万行を Mysql に書き込むには、大量の挿入や高度な最適化を行っても、しばらく時間がかかります (I/O が高くなります)。これは、バッチ プロセスではなく、インタラクティブなプロセスである必要があります。

保存および読み取りを行っているデータの場合、データの一貫性と可用性は、パフォーマンスとスケーラビリティほど重要ではありません。そのため、書き込み中にシステム障害が発生した場合、データの損失に対処できます。ただし、データはある時点で確実にセカンダリ ストレージに永続化する必要があります。

要約すると、要件は次のとおりです。

  • 潜在的に数千万のレコードの低遅延一括書き込み
  • 何らかの方法でデータを永続化する必要がある
  • 低レイテンシのランダム読み取り
  • 永続的な書き込みは不要
  • 結果整合性は問題ありません

ここに私が見たいくつかの解決策があります:

  • レコードがメモリに書き込まれ、非同期的にデータベースに排出されるキャッシュ (Terracotta、Gigaspaces、Coherence) の後ろに書き込みます。これらは私が避けたいアプリにある程度の複雑さを追加しているように見えるので、私は少し怖がっています.
  • MongoDB、HBase、Tokyo Tyrant などの高度にスケーラブルなキー値ストア
0 投票する
1 に答える
2936 参照

c++ - Visual Studio はデータ キャッシュ操作をサポートしていますか?

低レイテンシ コンピューティングに関する優れたプレゼンテーションを読みます。彼らは、IBM の XL C/C++ コンパイラ データ キャッシュ操作__dcbt (データ キャッシュ ブロック タッチ) をセルコンパイラに参照していました。この操作は、メモリのブロックを L1 キャッシュにロードします。

Visual Studio (または G++ または Intel) には、Intel プロセッサ用の同様の機能がありますか? そうで、解決策がプラットフォーム固有 (つまり、Windows または *nix のみ) である場合は、その旨をお知らせください。

0 投票する
3 に答える
3903 参照

c# - 最低遅延の小さなサイズのデータ​​インターネット転送プロトコル?c#

私はインターネットゲームプロジェクトを行っています。このプロジェクトでは、2台の通常の家庭用PC間で、インターネットを介して小さなサイズのデータ​​(1Kから50K)を送信し続けます。私が気にする鍵はレイテンシーです。

TCP、UDPが人気があることを理解しています。TCPは信頼できますが、UDPよりも低速ですが、UDPは安全ではなく、独自の障害処理コードを実装する必要があります。

2台の通常の家庭用PC間で小さなデータを送受信するために従うことができる他のプロトコルはありますか?

通常の家庭用PCの用語では、通常のブロードバンド(512kbps〜2Mkbps)と世界中(おそらく米国と日本の間)にあると思います。

もう1つの大きな質問は次のとおりです。

あるPC(英国)から別のPC(日本)にpingを実行すると、300ミリ秒の遅延が発生します。1つのプロトコルを見つけること、またはTCP / UDPを使用してこの300msの遅延未満で1KBのデータを送受信することは可能ですか?または、pingは、2つのエンドポイント間の最小遅延を知るための最速の方法である必要がありますか?

ありがとう

0 投票する
12 に答える
20907 参照

java - Java 低遅延アプリケーションの開発チェックリストは何ですか?

Java 低遅延アプリケーションの包括的なチェックリストを作成したいと思います。ここにチェックリストを追加できますか?

これが私のリスト
です 1. オブジェクトを不変にします
2. 同期メソッドを削減してみてください
3. ロックの順序は十分に文書化され、慎重に処理する必要があります
4. プロファイラー
を使用します 5. アムダルの法則を使用し、順次実行パスを見つけます
6. Java 5 を使用します
スレッドの優先順位はプラットフォームに依存するため避ける
8. JVM ウォームアップを使用できる
9. 不公平なロック戦略を優先する
10. コンテキスト切り替えを避ける (多くのスレッドは生産性を低下させる)
11. ボックス化、ボックス化解除を避ける
12. コンパイラの警告に注意して
ください 13. スレッド数はコア数以下にする必要があります

低遅延アプリケーションは、ミリ秒ごとに調整されます。

0 投票する
4 に答える
1399 参照

web-applications - 最小のレイテンシー、最小のオーバーヘッドのアプリケーション サーバー?

多数の非常に小さなメタデータ要求を送信するためのネットワーク インターフェイスを持つアプリケーションを設計しています。アプリケーション コード自体は非常に高速で、基本的にメモリにキャッシュされたデータを検索してクライアントに送信します。

Linux ボックスで実行されているネットワーク アプリケーション サーバーで得られる絶対最小レイテンシはどれくらいですか? これは、認証なしで gigE で実行される内部アプリになります。C、C++、または Python を優先して、考慮されるすべての言語/フレームワーク。プロトコルについても同様ですが、HTTP が適しています。

0 投票する
2 に答える
713 参照

networking - *nix システムでの NIC のパケットとユーザー アプリケーション間のメモリ コピーの数は?

This is just a general question relating to some high-performance computing I've been wondering about. A certain low-latency messaging vendor speaks in its supporting documentation about using raw sockets to transfer the data directly from the network device to the user application and in so doing it speaks about reducing the messaging latency even further than it does anyway (in other admittedly carefully thought-out design decisions).

My question is therefore to those that grok the networking stacks on Unix or Unix-like systems. How much difference are they likely to be able to realise using this method? Feel free to answer in terms of memory copies, numbers of whales rescued or areas the size of Wales ;)

私が理解しているように、彼らのメッセージングは​​UDPベースであるため、TCP接続の確立などに問題はありません。

幸運をお祈りしています、

マイク

0 投票する
2 に答える
3252 参照

performance - Linux での tcp/udp パケットの送受信におけるレイテンシの原因

Linux 2.6 で TCP/UDP パケットを送受信する際の遅延の原因は何ですか?

「ピンポン」レイテンシ テストでのレイテンシ ソースを知りたいです。

イーサネットの遅延に関するかなり優れた論文がいくつかありますが、それらはワイヤとスイッチの遅延の原因のみをカバーしています (大まかに言えば、特定のスイッチのみ)。

パケットに続く処理のステップは何ですか?

通常の ping (icmp) の詳細なレイテンシ分析に関する論文も役立ちます。

私はコミュニティに依存しています:)

0 投票する
2 に答える
637 参照

performance - 1 つの双方向 TCP ソケットまたは 2 つの単方向? (Linux、大容量、低遅延)

大量のデータを定期的に送信 (交換) する必要があり、2 台のマシン間でできる限り短い待ち時間が必要です。ネットワークはかなり高速です (例: 1Gbit または 2G+)。OSはLinuxです。1 つの tcp ソケット (send と recv 用) を使用する場合と、2 つの単方向 tcp ソケットを使用する場合のどちらが高速ですか?

このタスクのテストは、NetPIPE ネットワーク ベンチマークと非常によく似ています。2^1 から 2^13 バイトまでのサイズのレイテンシと帯域幅を測定し、各サイズが少なくとも 3 回送受信されます (Teal タスクでは、送信回数がより多くなります。プロセスはおそらくピンポンのように送受信されます)。

2 つの単方向接続の利点は、Linux から得られます。

http://lxr.linux.no/linux+v2.6.18/net/ipv4/tcp_input.c#L3847

ファスト パスを無効にするその他の条件はすべて false です。そして、一方向でないソケットのみが受信時にカーネルを高速パスから停止します

0 投票する
5 に答える
4094 参照

.net - .Netでの低遅延シリアル通信

私は、さまざまなサードパーティのライブラリと、.Netでの低遅延シリアル通信へのアプローチを研究してきました。私は十分に読んだので、今では完全に一周し、意見の対立がさまざまであるため、始めたときと同じくらいほとんど知りません。

たとえば、「Microsoftが提供するソリューションはフレームワークのバージョン間で安定しておらず、機能が不足している」という説得力のある記事があったため、フレームワークの機能は除外されました。

古いCOMベースのライブラリの多くをバッシングする記事を見つけました。ガベージコレクションが原因で、低レイテンシの.Netアプリ全体のアイデアを非難する記事を見つけました。

また、低遅延通信を目的としたP / InvokingWindowsAPI機能が受け入れられないことを示す記事も読みました。

このルールは、私が考えることができるあらゆるアプローチについてです!

そこにいた/その経験をした人たちからのいくつかの言葉を本当に感謝します。理想的には、堅実なライブラリ/パートナーを見つけることができ、コミュニケーションライブラリを自分で構築する必要はありません。私には次の簡単な目的があります。

  • C#/VB.Netでの持続的な低遅延シリアル通信
  • 32/64ビット
  • 十分に文書化されている(ソリューションがサードパーティの場合)
  • ガベージコレクションによる影響は比較的ありません(通信および遅延に関して)。
  • 柔軟性(将来何とインターフェースする必要があるかわかりません!)確かに必要な唯一の要件は、RS485ベースのリニアアクチュエータ、シリアル/マイクロコントローラなどのさまざまな産業用デバイスとインターフェースできる必要があることです。ベースのゲージ、およびModBus(RS485)デバイス。

私の混乱を和らげる可能性のあるコメント、アイデア、考え、記事へのリンクは大歓迎です!