2013-11-09 2 views
1

Эй, мне было интересно, может ли кто-нибудь помочь мне, я знакомлюсь с кассандрой, но мне было любопытно и хотелось измерить, сколько дисковых операций ввода-вывода происходило, когда я читал из семейств столбцов.Cassandra disk io

Я посмотрел на профилировщик opscentre, но единственной метрикой, которую я смог найти, было использование DIsk, но из того, что я понимаю, это время, которое процессор тратит на выполнение ввода-вывода диска, поэтому я угадываю его измерительные материалы, такие как время переключения контекста. Однако, поскольку это делает это, я подумал, может быть, должен быть момент, когда кассандра понимает, что ему нужно идти на диск, тогда я мог бы просто поставить там счетчик.

Другим вариантом может быть поставлено две метки времени вокруг считываемого вызова, и если она находится в порядке ms, то я знаю, что ее прочитал диск. Однако я не совсем уверен, где системный вызов, я думал, что нашел его в RandomAccessReader в методе reBuffer() (int n = super.read (buffer, read, buffer.length - read);) однако он не " t, похоже, когда я обращаюсь к семействам столбцов.

Короче говоря, любые идеи о том, как определить количество возникающих при этом дисковых операций ввода-вывода?

ответ

1

iostat -m 1 -x распечатывает различную статистику для вашего диска, включая количество операций чтения в секунду. Если у вас есть выделенные диски для Cassandra, это скажет вам общее количество прочитанных операций ввода-вывода, но это включает в себя уплотнение. Если нет уплотнения, то он будет измерять только ваши операции чтения.

Трудно получить количество реальных операций ввода-вывода дисков, измеряя системные вызовы, потому что, даже если Cassandra выдает системный вызов чтения, его можно прочитать из кеша файловой системы и на самом деле не коснуться диска.

В худшем случае, Cassandra будет делать 2 ввода-вывода для каждого считывания. Один, чтобы найти смещение (если в ключевом кэше нет смещения, а индексный файл не находится в кеше), а другой - для получения данных из SSTable (если SSTable не находится в кеше).

+0

Большое спасибо за ответ. Я попробую использовать iostat, как вы предложили. – user2971608

0

1- для отдельных узлов дисковых операций ввода-вывода

Put ниже сценария в .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- для сетевого IOPs

Установки ганглиев имеет некоторые хорошие диаграммы и имеют мониторинг в реальном времени