1

誰かが私を助けてくれるかどうか疑問に思っていました。cassandra のことをよく知っていますが、興味があり、列ファミリーから読み取っているときに発生したディスク I/O の数を測定したかったのです。

私はopscentreプロファイラを見ましたが、私が見つけた唯一のメトリックはディスク使用率でしたが、私が理解していることから、これはCPUがディスクI / Oに費やす時間であるため、コンテキスト切り替え時間などの測定値を推測しています. ただし、これを行うので、cassandraがディスクに移動する必要があることに気付いた時点が必要だと思いました。そこにカウンターを置くことができます。

もう1つのオプションは、読み取り呼び出しの周りに2つのタイムスタンプを置くことができ、ミリ秒のオーダーであれば、ディスク読み取りであることがわかります。ただし、システムコールがどこにあるのか完全にはわかりません.reBuffer()メソッド(int n = super.read(buffer、read、buffer.length - read);)のRandomAccessReaderにあると思いましたが、そうではありません'列ファミリーを照会すると、そのように見えません。

要するに、発生しているディスク I/O の数を把握する方法についてのアイデアはありますか?

4

2 に答える 2

1

iostat -m 1 -x1 秒あたりの読み取り操作数など、ディスクのさまざまな統計を出力します。Cassandra 専用のディスクがある場合は、読み取り I/O の合計数がわかりますが、これには圧縮が含まれます。コンパクションが実行されていない場合は、読み取り操作のみが測定されます。

シスコールを測定して実際のディスク I/O の数を取得することは困難です。Cassandra が read syscall を発行したとしても、ファイルシステム キャッシュから読み取られ、実際にはディスクにアクセスしていない可能性があるためです。

最悪の場合、Cassandra は読み取りごとに 2 つの I/O を実行します。1 つはオフセットを検索し (キーキャッシュにオフセットがなく、インデックス ファイルがキャッシュにない場合)、もう 1 つは SSTable からデータを取得します (SSTable がキャッシュにない場合)。

于 2013-11-10T18:33:25.960 に答える
0

1 - 個々のノードのディスク IOP 用

以下のスクリプトを .sh ファイルに入れて、実行するようにスケジュールします。

#!/bin/bash

 `echo date` 
  printf "\t\t\t\t\t\t\t\t nodetool info Information\n"
  printf "\t\t\t\t\t\t\t\t ***********************\n\n" 
 `echo nodetool info` 


  printf "\t\t\t\t\t\t\t\t iostat -c Information\n" 
  printf "\t\t\t\t\t\t\t\t ***********************\n\n" 
 `echo iostat -c` 

  printf "\t\t\t\t\t\t\t\t iostat -x -m 60 Information\n" 
  printf "\t\t\t\t\t\t\t\t *****************************\n\n" 
 `echo iostat -x -m 60 -d 1`

  printf "\t\t\t\t\t\t\t\t vmstat -s -S m 60 Information\n" 
  printf "\t\t\t\t\t\t\t\t *******************************\n\n"
 `echo vmstat -s -S m 60` 

  printf "\t\t\t\t\t\t\t\t nodetool cfstats Information\n"
  printf "\t\t\t\t\t\t\t\t **************************************************\n" 
 `echo nodetool cfstats` 

  printf "\t\t\t\t\t\t\t\t nodetool  tpstats\n" 
  printf "\t\t\t\t\t\t\t\t *************************************\n\n" 
 `echo nodetool tpstats` 
  printf "\n\n" 
  printf "___________________________________________________________________________________________________________________________\n\n"
  echo 'END'

2- ネットワーク IOP 用

Ganglia をインストールします。いくつかの優れたチャートがあり、リアルタイムで監視できます

于 2013-11-12T08:12:44.123 に答える