Подтвердить что ты не робот

EC2 t2.medium бустабильный кредит расчет "сбережений"

Я использую экземпляр T2.medium. В третий день я делаю интенсивные статистические расчеты и полагаю, что остальные 2/3 времени я "заработал" кредиты со скоростью 24 часа в час.

Но этого не происходит. Это мое использование последние два дня:

Использование кредита ЦП

И это моя кредитная история:

Баланс ЦП Кредиты

Я не использовал его (более) за день до вчерашнего вечера. Я использую его интенсивно в течение пяти часов. Тогда я бы ожидал, что моя "учетная запись" будет обрабатывать 24 кредита в час, но в течение 9-10 часов почти ничего не происходит, а затем она вступает в игру как ожидается в течение 9 часов, а затем снова уходит.

Я не могу понять, что происходит, и если это ошибка. У кого-нибудь есть хорошее объяснение?

EDIT: я включил неделю активности ниже. Я все еще не могу понять алгоритм:

Неделя использования ресурсов процессора Неделя кредитного баланса CPU

4b9b3361

Ответ 1

Обновление: правила, используемые для расчета кредитных балансов ЦП t2, изменились так, что проблема, вызывающая этот вопрос, больше не должна оказывать влияния.

На основе отзывов клиентов мы обновили экземпляры T2 новой политикой распределения кредитов ЦП, которая во всех случаях совпадает с предыдущей политикой или лучше ее.

...

Теперь заработанные кредиты ЦП не истекают, пока экземпляр не будет остановлен или остановлен. Экземпляр T2 может по-прежнему зарабатывать до того же максимального уровня, который разрешен размером экземпляра. CPUCreditBalance теперь будет увеличиваться всякий раз, когда текущий CPUCreditUsage находится ниже базовой линии и может вырасти до максимально допустимого для размера экземпляра

https://forums.aws.amazon.com/ann.jspa?annID=5196

h/t: последняя неделя в AWS для обновления.

Оригинальный ответ следует.


Этот вопрос вызвал у меня немало душевных страданий за последние несколько часов, потому что графики почти имеют смысл, основываясь на том, что я знаю о случаях t2. Почти, но не совсем, и я не мог разобраться в проблеме. Это худший вид. Особенно большой поклонник ценностного предложения, предлагаемого машинами t2.

Но я наконец понял, что здесь происходит.

Есть одна концепция кредитов ЦП, которую документация, похоже, не объясняет, но математика работает, и объяснение хорошо выдерживает реальные наблюдения:

Последние заработанные кредиты ЦП расходуются первыми, а не последними.

Имеет ли значение заказ? Оно делает.

Для тестирования я использовал t2.micro (главным образом потому, что у меня был простаивший, который работал несколько дней, и мне нужно было что-то делать, и я не хотел, чтобы дополнительные "начальные" кредиты нового экземпляра облачно наблюдения), но все типы экземпляров в классе t2 имеют похожее поведение.

Для справки: в классе t2 кредиты ЦП зарабатываются с разной скоростью, но кредиты ЦП используются с одинаковой ставкой для всех типов экземпляров в классе:

CPU Credit обеспечивает производительность полного ядра процессора за одну минуту.

У t2.micro и t2.small есть только одно ядро, поэтому они могут записывать до 1 кредита в минуту или 60 кредитов в час при 100% загрузке ЦП. T2.medium и t2.large являются двухъядерными, поэтому они могут записывать до 2 кредитов в минуту или 120 кредитов в час при 100% загрузке ЦП на обоих ядрах.

Если 1 кредит = 100% от 1 ядра за 1 минуту, то 1 кредит также равен 20% от 1 ядра за 5 минут. Поскольку интервал графика Cloudwatch составляет 5 минут, я настроил следующий тест:

На t2.micro, который работал в течение нескольких недель практически без нагрузки, я установил lookbusy, удобную утилиту, которая позволяет заставить машину "выглядеть занятой" с указанными вами параметрами - например, поддерживать загрузку ЦП на 20%,

$ screen -S eat_cpu
$ ./lookbusy -v -c 20 -r fixed

Это делает именно то, что вы ожидаете, сжигая 1 кредит ЦП каждые 5 минут. График "Использование кредитов ЦП" подтверждает это, показывая, что 1 кредит используется каждые 5 минут. (График загрузки ЦП и top подтверждают 20%.)

Но что происходит с моим кредитным балансом? Это истощается на 1 кредит каждые 5 минут. Это кажется неправильным, не так ли? Я имею в виду, да, я только что сказал, сколько я использую, но... Я также должен зарабатывать 6 кредитов в час, так что я должен истощать баланс только на 0,5 кредита каждые 5 минут, право?

Подожди... опять проверяю цифры: я зарабатываю 6 в час, трачу 12 в час, так что, да... похоже, что чистое снижение должно составлять всего 6 в час, а не 12... право? Очевидно, что-то не складывается так, как я ожидал, потому что мой баланс определенно уменьшается на 12 в час, и мой процессор определенно работает только на 20%.

Кажется, я не зарабатываю кредиты, чтобы компенсировать свое использование. Как это возможно?

Если...

Неиспользованные заработанные кредиты за указанный 5-минутный интервал истекают через 24 часа после их получения.

Что ж, 24 часа назад мой экземпляр был полностью бездействующим. В течение этого часа я заработал 6 кредитов, которые я... не (?) Использовал. Я не использую их сейчас? Не должен ли я быть?

все просроченные кредиты удаляются из кредитного баланса ЦП в это время, прежде чем будут добавлены вновь заработанные кредиты

Crud. Может ли это быть связано? В этот час я заработал 6 новых кредитов. Но прямо перед этим я потерял 6 кредитов за 24 часа. Затем я потратил 12 кредитов в этот час... так что мой баланс уменьшился на 6, увеличился на 6 и уменьшился еще на 12. Что ж, это объясняет изменение -12 за час, но...

Может ли это быть причиной?

Я жадный читатель документации, поэтому я знал об аспекте истечения срока действия кредитов... но я все время предполагал, что это не что иное, как причина, по которой бездействующий экземпляр зависает около своего максимального баланса, и не имел никакого другого значения. Как это могло? Если у меня меньше максимума (6 x 24 = 144 для t2.micro), то как я могу получить кредиты на необходимость истечения срока действия?

Если мои кредиты от 24 часов назад всегда считаются против меня, разве мой баланс не стремится к нулю, независимо от того, что я делаю?

Если...

После того, как ворочался большую часть ночи, созерцая скольжение вокруг куч воображаемых жетонов (представляющих кредиты ЦП) на воображаемой столешнице (представляющей время)... Я понял, что правило "истечения срока действия" будет вызывать именно то поведение, которое мы наблюдаем, если, нелогично, кредиты расходуются не в том порядке, в котором они заработаны (FIFO), а в обратном порядке (LIFO).

Следуя этой логике, объяснение того, что на самом деле делает мой тест с 20% процессором, заключается в следующем: первый час моего теста был "час 0" -

     | spends 6+6 credits  | expire 6 credits
test | earned this many    | earned this many
hour | hours before hour 0 | hours before hour 0
-----+---------------------+--------------------
 0       -1,  -2                   -24
 1       -3,  -4                   -23
 2       -5,  -6                   -22
 3       -7,  -8                   -21
 4       -9, -10                   -20
 5      -11, -12                   -19
 6      -13, -14                   -18
 7      -15, -16                   -17

И они встречаются в середине.

Это правда или я догадываюсь? Я не догадываюсь, а вот и доказательства

Через 8 часов мой график использования кредитов ЦП остается стабильным, сохраняя стабильность на уровне 1 кредита в 5 минут, но через те же 8 часов мой кредитный баланс ЦП, наконец, начинает истощаться с (более медленной) скоростью, которую я первоначально ожидал: 0,5 кредита каждый 5 минут.

По-видимому, поскольку я работал в обратном времени, тратя ранее заработанные кредиты "сначала новыми", я догнал свои старые кредиты, которые вот-вот истекли, и, наконец, достиг точки, где я использовал их, прежде чем у них появился шанс истечь. Теперь у меня нет кредитов, срок действия которых превышает 24 часа, и поэтому срок действия кредитов не истекает, поэтому я больше не теряю кредиты до получения новых кредитов. Теперь я могу сохранить 6, которые я зарабатываю в час, потому что я израсходовал старые, уменьшив чистое влияние на мой кредитный баланс до ожидаемого уровня.

Это объясняет единственную оговорку, которая была у меня в отношении графиков в вопросе: почему, когда использование падает, требуется так много времени, чтобы баланс восстановился?

Ответ TL; DR таков: баланс не восстанавливается сразу после всплеска интенсивного использования, потому что у вас все еще есть неиспользованные кредиты за 24 часа, которые аннулируют вновь заработанные кредиты, пока вы не достигнете точки в время, когда у вас нет 24-часовых неиспользованных кредитов. Когда это происходит, ваш кредитный баланс снова увеличивается.

Оставьте экземпляр полностью бездействующим в течение 24 часов, и вы в конечном итоге увидите, что баланс, по большей части, снова возрастает до максимума, как и ожидалось. Если время простоя меньше 24 часов, ваш баланс будет постоянно оставаться где-то ниже максимума.

Мой тестовый сценарий в конечном итоге исчерпал мой кредитный баланс почти полностью вниз. Когда я остановил процесс, потребляя процессор, кредитный баланс начал восстанавливаться немедленно, с ожидаемой скоростью 6 кредитов в час.

И наоборот, когда я взял другую машину, которая наблюдала низкую загрузку в течение 24 часов, и включил ее ЦП на 100% в течение нескольких минут, а затем вернул ее в режим ожидания, кредиты не начали накапливаться немедленно... будучи компенсированы старые, истекающие.

Цитаты взяты из http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html.