問題タブ [throughput]
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.
mongodb - Choosing/configuring a database for high-throughput, reliable, consistent write throughput, sacrificing latency
I'm working on a real-time application with the following characteristics:
- Hundreds of clients will be inserting rows/documents at the same time, each inserting a row every couple of seconds.
- Largely append-only; almost all rows/documents, once inserted, are never changed.
- A client should only see success when data has been flushed to disk, and thereafter read-your-writes consistency should hold.
- Clients are willing to wait on the order of seconds for confirmation - long enough for multiple disk seeks and writes to happen.
- There is too much data to fit in RAM (ruling out options like Redis). But written-long-ago rows are rarely accessed, so it's acceptable to not have them in memory.
- Ideally, these writes should not block reads.
- A key-value store is fine, but there needs to be at least one reliable auto-incrementing index.
In other words (and tl;dr), the clients can tolerate latency, but they need a lot of trustable write throughput - more throughput than "one write is one disk operation."
I'm envisioning a database that would be implemented something like this: accept a (theoretically limited by the number of file descriptors) number of TCP connections, buffer those writes in memory, log batches of them to disk as often as possible (along with the updates to the auto-incrementing index), and only respond to those TCP connections when the associated disk write operation is complete. Or it could be as simple as a lazily-writing database publishing a message that it has done a disk write (clients wait for the lazy response, then wait for the write message to report success).
I think that with such high latency tolerance, this isn't asking too much. And I'd imagine that others have had this problem, such as financial companies that can't afford to lose data, but can afford to delay the response to any one client.
Do any battle-tested database solutions like Postgres, CouchDB/Couchbase, or MongoDB support modes of operation like this?
wcf - マシンを追加すると、AzureがホストするWCFサービスが拡張されないのはなぜですか?
AzureでホストしているWCFサービスがあります。それはいくつかのxmlを取り、それをメモリ内で処理し(外部呼び出し/ dbなどはなく、約150msかかります)、いくつかのxmlを返します。
私たちはそれを負荷テストしており、1、2、および4コアのマシンで実行すると、プロセッサを最大限に活用し、1秒あたり最大40コールのスループットを得ることができます(4コアマシンで)。ただし、8コアマシンまたは2台の4コアマシンに切り替えると、1秒あたりの呼び出し数は約40になります。
処理を行うマシンの数を増やすと、スループットを上げることができないのはなぜですか?マシンを追加すると、スループットがかなり直線的に増加すると思いますが、そうではありません。なぜだめですか?
c++ - Linux での低遅延シリアル通信
Linux でシリアル ポート経由のプロトコルを実装しています。このプロトコルは要求応答スキームに基づいているため、スループットは、デバイスにパケットを送信して応答を取得するのにかかる時間によって制限されます。デバイスはほとんどが Arm ベースで、Linux >= 3.0 を実行します。往復時間を 10 ミリ秒未満に短縮するのに問題があります (115200 ボー、8 データ ビット、パリティなし、メッセージあたり 7 バイト)。
select、poll、epoll、または ioctl を使用した手動のポーリングのうち、どの IO インターフェースが最小のレイテンシーを提供してくれるでしょうか? ブロッキング IO または非ブロッキング IO はレイテンシに影響しますか?
setserial で low_latency フラグを設定してみました。でも効果は無かったようです。
レイテンシーを減らすために他にできることはありますか? 私はすべてのデバイスを制御しているため、カーネルにパッチを適用することもできますが、そうしないことをお勧めします。
- - 編集 - -
シリアル コントローラーは 16550A を使用します。
cuda - CPUとCUDAでのモジュラー乗算のレイテンシとスループットの決定
CUDAとCPU(i5 750)での(符号なし)モジュラー乗算のレイテンシーとスループットの両方を決定する必要があります。
CPUの場合、このドキュメント(121ページ)を見つけました。SandyBridgeの場合、どちらを参照すればよいかわかりませんが、「MUL IMUL r32」の場合、レイテンシーと相互スループットが2に等しい場合に4サイクルを取得します。 「DIVr64」のレイテンシーは30〜94、rec.thrです。22-76。
最悪のシナリオ:
レイテンシー94+4
rec.thr。76 + 2
右?私はOpenSSLを使用してそれらを実行していますが、最低レベルでは常に単純なモジュラー乗算を実行していると確信しています。
CUDAに関しては、現在PTXでモジュラー乗算を実行しています。232bの数値を乗算し、結果を64bレジスタに保存し、32bモジュロを64bレジスタにロードしてから、64bモジュロを実行します。
ここを見ると、76ページで、32b整数乗算のFermi 2.xのスループットは16(MPあたりのクロックサイクルあたり)であると言われています。モジュロに関して、彼らはただこう言います:「計算能力2.xのデバイスに関する20以下の命令」...
正確にはどういう意味ですか?最悪の場合、レイテンシのMPあたりのモジュロあたり20サイクル?そしてスループット?MPあたりいくつのモジュロ?
編集:
そして、ワープの最初の16スレッドだけが32b乗算(MPごとのサイクルごとに16スレッド)を実行する必要があるワープがある場合はどうでしょうか。後半は何もする必要はありませんが、GPUは1〜2サイクルビジーになりますか?
c# - スカイプ使用時のネットワークのスループットを測定する方法
USB ドングル Wimax と skype を voip アプリケーションとして使用しています。実行時のスループット (kb/s または Mb/s) を測定したい。matlab または C# を使用してこれを行う方法はありますか? (プロジェクトがあり、既存のツールを使用しないコードを記述する必要があります)ありがとう
tcp - ネットワークスループットの計算
4MBitsのネットワークがあり、データスループットを計算したい場合、これは最大転送速度からイーサネット/ IP/TCPヘッダーからのオーバーヘッドを差し引いたものを考慮しています。Webで読むと、TCPセグメントのMSS(最大セグメントサイズ)は576-20-20であり、これらの最後の2つはTCPおよびIPヘッダーのオーバーヘッドであり、データの93%になります。つまり、使用するのは私の4MBの93%はデータ転送にリンクしています。さて、リンクayerのオーバーヘッドはどこにありますか?それも追加すべきではありませんか?間違っていない場合、イーサネットヘッダーは約46バイトなので、最終的な合計は576-20-20-46 = 490になり、85%のデータスループットになりますが、何か間違ったことをしていますか?
memory - 「gld/st_throughput」メトリックと「dram_read/write_throughput」メトリックの違いは何ですか?
CUDA ビジュアル プロファイラー バージョン 5 では、"gld/st_requested_throughput" がアプリケーションの要求されたメモリ スループットであることを知っています。ただし、ハードウェアの実際のスループットを見つけようとすると、「gld/st_throughput」と「dram_read/write_throughput」という 2 つのメトリックのペアが認定されているように見えるため、混乱します。実際のハードウェア スループットはどちらのペアですか? そして、もう一方は何として機能しますか?
performance - TCP 最大スループットとブラウザ
理論的には、最大 tcp 速度は min{rwnd,cwnd} / RTT です。ここで、cwnd は輻輳ウィンドウ サイズ、rwnd は受信ウィンドウ サイズです。cwnd が十分に大きいと仮定すると、rwnd/RTT になります。ここで、最大ウィンドウ サイズが 65K バイトの場合、次のようになります (一部のサイトからのこれらの計算を使用):
これはどのくらい正確ですか?RTT が 200 ミリ秒を超えている間、Web サイト (トレント、直接ダウンロードではなく) から 5 Mbps でダウンロードできるため、理論上の最大値を超えていますが、なぜこのようなことが起こるのでしょうか? ブラウザーはダウンロードに複数の TCP 接続を使用しますか?
また、rwnd バイトが 1 つ以上の TCP セグメント サイズになる可能性がある (そして確実にそうなる) ため、rwnd/RTT が実際にどこから来たのかを正確に知りたいと思います。 RTT は、送信されたすべてのセグメントから ACK を送受信するのに十分ではないため、rwnd/RTT は実際のスループットとはかなりかけ離れています。
testing - Kafka 0.8 プロデューサーのスループット テスト
Kafka の公式ドキュメントによると、プロデューサーのスループットは約 50MB/S です。しかし、私はいくつかのテストを行います.プロデューサー全体は約2MB/Sです. テスト環境はドキュメントと同じです。1 つのプロデューサー、1 つのブローカー、1 つの Zookeeper が独立したマシンにあります。メッセージ サイズは 100 バイト、バッチ サイズは 200、フラッシュ間隔は 600 メッセージです。テスト環境は同じで、構成も同じです。では、なぜ私のテスト結果とドキュメントに記載されている内容に大きなギャップがあるのでしょうか?
tomcat - スケーラブルなxmlブリッジ処理プラットフォームの構築
インターネットからリクエストを受け取り、ローカルで利用可能な検索プラットフォームに接続してXMLを取り戻すミドルウェアを構築しています。
次に、このXMLを変更し、プルーニングし、他の形式(おそらく、JSON)に変更して、呼び出し元のアプリケーションに送り返します。
これを実現するために、次のテクノロジースタックを使用することを考えています。
Tomcat+プレーンな古いサーブレット
ボックスあたりのスループット(クアッドコア、デュアルCPU、32 GB RAM)をできるだけ高くしたいのですが、tomcatが最適なオプションではない可能性があり、Jettyまたはグリズリーまたは私が知らない他の人?誰かが、どのテクノロジーから始めるかについての比較データや事例証拠を持っていますか?
そうでない場合は、自分のテストデータセットでベンチマークを行うことから始めるべきだと思います。はぁ