Назад | Перейти на главную страницу

EBS естественно требует процессора?

У нас есть экземпляр m1.medium EC2 с небольшим (15 Гб) диском EBS, на котором запущены как Rails 3, так и сервер PostgreSQL. Мы заметили скачки производительности ЦП в странные моменты и, наконец, поняли, что даже простой и устойчивый доступ к EBS, похоже, блокирует ЦП. Например, простая сборка около 3G журналов привела к 100% загрузке ЦП - что означает, что оба ядра, что должно быть невозможно для grep! Удаление нескольких файлов журналов также заняло около 25% ЦП, что больше, чем я ожидал. Мы не меняемся местами.

Это нормально? Гуглу это сложно сделать, поскольку «высокая загрузка ЦП» - это еще и название типа инстанса EC2. Я с радостью предоставлю более подробную информацию и тесты, но сначала я хотел проверить, было ли это на самом деле.

На производительность томов EBS могут влиять следующие факторы:

  • Новые тома EBS имеют штраф при первом использовании, даже если они созданы из моментального снимка EBS. Первое чтение или запись в каждый блок тома займет гораздо больше времени, чем последующие обращения.

  • Когда был инициирован моментальный снимок EBS, на томе EBS может наблюдаться высокий уровень iowait при попытке записи в блок, который еще не был скопирован в хранилище моментальных снимков S3.

  • Тома EBS используют пропускную способность сети на экземпляре. Вы можете повысить производительность ввода-вывода и уменьшить время ожидания ЦП, если обновитесь до более крупного типа.

Вот статья, которую я написал о ленивой загрузке томов EBS из снимков:

Определение момента завершения инициализации нового тома EBS с помощью снимка состояния EBS
http://alestic.com/2010/03/ebs-volume-initialization-from-snapshot

Вот статья, которую я написал, в которой описывается, почему нам пришлось переместить наши снимки EBS в подчиненную базу данных, а не запускать их на главной:

Снимки EBS ведомой базы данных MySQL на EC2
http://alestic.com/2009/08/ec2-mysql-slave-snapshot

Вероятно, что почти все процессорное время, потраченное на указанную вами команду grep, было связано с iowait. Запустите top в другом терминале во время grep и посмотрите %wa стоимость. Это значение - время, затрачиваемое на ожидание завершения ввода-вывода.

Это хорошо известный и обсуждаемый факт, что тома EBS плохо работают, когда дело доходит до ввода-вывода. Вот почему многие организации объединяют несколько томов EBS вместе с помощью RAID (обычно RAID 0, но, возможно, и другие уровни также могут быть полезны) для повышения производительности.