У нас есть экземпляр 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, но, возможно, и другие уровни также могут быть полезны) для повышения производительности.