Остановитесь на минутку и задумайтесь, сколько энергии вы потребляете? Да, лично вы… и ваша семья. Я, например, думаю об этом постоянно. Постоянно выключаю свет, регулирую термостат, просчитываю маршруты поездок для экономии бензина и выключаю телевизор, если его не смотрят. Уверен, что и вы делаете тоже самое. За несколько последних лет сильно увеличились затраты на потребление всех видов энергии и эти затраты постоянно растут. А задумывались ли вы о том, сколько энергии расходуется на «клик» по ссылке веб-страницы или отправка письма по электронной почте? Наверное, нет. До сих пор это «нет» было и у меня.
Я провожу исследования эффективности использования энергия различными системами и процессами при постоянном доступе к веб-сайтам интернета. Недавно на одной из встреч член исполнительного совета заметил, что прикрываясь стоимостью своих персональных компьютеров и широкополосного соединения в интернете скрываются истинные энергетические затраты. А это, прежде всего, сервера и инфраструктура информационных супер-магистралей. Сколько энергии требует ваше желание увидеть последний топ видео на YouTube? Что будет, если Вы не щелкните на эту ссылку? Сколько энергии Вы сэкономите? Сколько углекислого газа не будет выброшено в нашу атмосферу? И я подумал: «Вау» какой интересный вопрос …, можно ли ответить на него немедленно? Вот в чем дело. Это фундаментальная проблема, которую сложно оценить (что никогда меня не останавливало), поэтому здесь мы рассмотрим, что происходит, когда вы посещаете веб-сайт и, приняв некоторые допущения, сделаем разумные выводы. Поехали …
Разберёмся, что происходит при «клике» по ссылке в браузере. Сначала, прежде чем браузерએ сможет запросить страницу, связанную со ссылкой, он должен подключиться к серверу. Для этого используется протокол транспортного уровня (TCPએ — Transport Control Protocol), что напоминает телефонный звонок серверу. Как только сервер «ответит» и установит соединение, браузер формирует пакет запроса для получения страницы, связанной со ссылкой. Этот запрос просит сервер отправить содержимое страницы обратно браузеру. Затем, если адрес реальный и страница существует, сервер передаёт поток пакетов контента на языке разметки гипертекста (HTMLએ — Hypertext Markup Language) с идентификаторами допустимости ответа, а также другую информацию, такую как скрипты, мета-данные, форматирование и прочее. Как только весь контент ответа на запрос доставляется браузеру, соединение завершается, а информация преобразуется в то, что пользователь сможет увидеть и прочитать. На самом деле современные браузеры одновременно делают несколько подключений и запросов, рисуют картинки и прочие разделы страницы. Таким образом, рендерингએ происходит гораздо быстрее, обеспечивая для пользователя более равномерное проявления образа страницы (см. ниже).
Процесс, описанный выше, проходит между двумя компьютерами, как правило, разделённых значительными расстояниями. Очень разумно ожидать, что большинство веб-запросов к серверам осуществляется на расстояниях от сотен до тысяч километров. Между двумя компьютерами разветвлённая сеть коммутаторов и маршрутизаторов — «шоссе» для пакетов данных. Как железнодорожные вагоны, пакеты путешествуют от кабельного модема вашей сети (локальной межсистемной линии) в центральный офис. Там пакеты переходят на уровень более высокой пропускной способности — волоконно-оптической связи (основные железнодорожные линий), где с помощью очень коротких импульсов лазерного света они могут уехать очень-очень далеко. Пакеты могут проходить нескольких крупных коммутационных станций, а затем направляться в местные сети, где и расположены удаленные сервера. Интересно то, что цельное сообщение часто состоит из нескольких пакетов и, как вагоны, могут поступить по разным причинам в точку приёма в разное время. Это происходит из-за различных условий движения по сети и снова, как поезда на железной дороге, данные маршрутизаторы ищут для пакетов наиболее эффективные пути доставки до точки приёма. Одна из задач программы на принимающем компьютере заключается в том, чтобы заново заказать информацию и передать ее на более высокий уровень программного обеспечения для интерпретации.
Выполнение всей этой транзакции требует электропитания для компьютеров на обеих конца (Ваш и удаленный сервер), для сетевого оборудования и для сетей между ними. Как упоминалось ранее, для оценки мощности, потребляемой при загрузке веб-страницы нужно сделать некоторые допущения. Мы будем игнорировать потребление локального компьютера и домашнюю сетевую инфраструктуру — будет считать, что это уже учтено в нашем бюджете и не зависит от доступа в Интернет. Мы будем делать оценку мощности только внешней для нашей дислокации структуры.
Далее нам потребуется понять сколько пакетов потребуется для передачи содержимого страницы в наш браузер. В нашей «типичной» странице не будет никаких видео, которое воспроизводится, чаще всего, в потоковом режиме при длительном непрерывном соединении (как долгий телефонный разговор с лучшим другом — только с ним можно так долго говорить). Она будет иметь 3 картинки, размером в среднем 100 кБ каждая и около 5 000 символов информации (например, как в Википедии или на странице новостей). Общее содержание страницы будет объёмом примерно 310 кБ для передачи от сервера к браузеру. К серверу от браузера, необходимо передать, как минимум 4 запроса (1 для страницы и 3 для изображений). Запросы занимают лишь около нескольких сотен байт, поэтому будем считать, что для получения одной веб-страницы вместе с запросами потребуется 315 кБ данных (которые включает в себя все затраты на установку соединения) между двумя компьютерами.
Теперь, когда у нас есть понимание сколько информации передается между двумя машинами, нам необходимо понять, сколько потребуется дополнительного сетевого оборудования и маршрутизаторов и какова потребляемая мощность всего этого добра. Предположим, что кабельная сеть, модем, коммутаторы и маршрутизатор одного конца потребляют около 200 Вт. Высокоскоростное соединения в Интернете на стороне маршрутизатора, вероятно, имеет оптоволоконный канал с интерфейсным модулем (еще 100 Вт). Предположим, что пакеты на своем пути 3 раза проходят через различные маршрутизаторы. Для каждого перехода потребуются 2 коробки оптоволоконных модуля и высокоскоростной маршрутизатор (для простоты) общей потребляемой мощностью порядка 300 Вт на каждый переход. Для сервера потребуется один оптоволоконный модуль, маршрутизатор и коммутатор, которые добавляют дополнительные 300 ватт. Таким образом, общая потребляемая мощность сети для нашей транзакции составит примерно 1 500 Вт (1,5 кВт). Кроме того, не надо забывать о средней мощности современного Блейд-сервера — допустим, она составляет в среднем около 50 Вт.
Думаю, что теперь у нас есть цифры, которые позволят получить более-менее достоверную оценку. Нам надо знать, сколько времени необходимо каждой единице оборудования на передачу данных при оценке потребляемой энергии в ватт-часах. Обсудим это для различных скоростей, начиная с кабельной сети. Типичные данные проходя через кабельную сеть системного интерфейса по спецификации (docsis) и через модем будет иметь совокупную пропускную способность около 152 Мбит/с (Мегабит в секунду) от сервера к компьютеру и 108 Мбит/с от компьютера на сервер. Для упрощения расчетов времени передачи пакетов остановиться на том, что в сети при передаче от компьютера к серверу мы будем использовать скорость 108 Мбит/сек. Также мы предполагаем, что используется оптоволокно OC-12 (Optical Carrier 12) со скоростью около 601 Мбит/с (от 622 Мбит/с до 21 Мбит/с всеми накладными расходами). В заключении в локальной сети, внутри инфраструктуры веб-сервера, скорее всего, будет 1 Гбит/с (гигабит в секунду).
Для нормализации всех этих различных скоростно-мощностных показателей, мы воспользуемся метрикой моей компании, National Semiconductor при оценке энергопотребления устройств интерфейса. Приведем наши предположения к единой метрике в единицах энергии на бит (Дж/бит — см. PowerWise® Solution Metrics). Я также упоминал этот метод в предыдущем статье (см. перевод «Эффективность передачи бита). Это позволяет нам значительно упростить вычисления всех различных скоростно-мощностных показателей. В Таблице 1 показано, сколько пикоДж требуется для передачи 1 бита. Полная энергия одного бита составляет примерно 4,6 микроДжоуль на бит.
Таблица 1 — Сетевое потребление электроэнергии |
Сетевое оборудование | Мощность | Скорость передачи данных | Потребление, пкДж/бит |
Кабель (docsis) | 300 Вт | 108 Мбит/с | 2,8 |
Оптоволокно (OC-12) | 900 Вт (3 х 300) | 601 Мбит/с | 1,5 |
Локальная сеть | 300 Вт | 1000 Мбит/с | 0,3 |
ИТОГО | 4,6 |
Загрузка сервера будет переменной, но мы предполагаем, что сервер полностью загружен и обеспечивает передачу 2 000 страниц в секунду. Ваша страница потребует 1/2000 от 40 ватт или 0.02 ватт-секунд (Джоулей). Теперь давайте посмотрим, что это значит для просмотра вашего веб-страницы.
Мы приходим к выводу, что средний запрос страницы требует около 315,000 байт данных. Вот вам 2,52 х 106 бит. Общая энергия, необходимая для этого составил 4,6 х 10-6 Дж/бит. Умножив эти два числа получим в 11,52 Джоулей. Добавляем энергопотребление сервера 0,02 Джоулей и в итого получаем 11,61 ватт-секунд (Джоулей) для просмотра каждой страницы. Опять же, это не потоковое видео (это рассмотрим в другой статье), а статичная веб-страница. Если теперь вы умножьте это на 1 млн. просмотров, что характерно для среднего города, то получим потребление энергии около 11,610 киловатт в час, чтобы обеспечить передачу данных… Достаточно для обеспечения электричеством примерно 13 американских домохозяйств за месяц! Если один человек просматривает 100 страниц в день, то это, примерно, 323 милливатт-часов энергии, что эквивалентно просмотру телевизора в течение примерно 10 минут — интересное соображение.
Как и ожидалось, вклад отдельного человека крайне мал, но нас миллиарды. Может, у вас есть лучше оценки или вы по другому смотрете на это, то дайте мне знать! До следующего раза…
По мотивам: The True Cost of an Internet “Click”