пятница, 23 ноября 2012 г.

Appliance бывают разные!

Кролик: Что значит «я»? «Я» бывают разные.
Снова возвращаюсь к теме Appliance. (Интересно, что я не нашёл ни одного адекватного перевода этого слова, кроме, разве что, жаргонного "тостер").
Пару последних дней касался вопроса о форме Appliance для практического использования, заострил внимание на двух из них: Virtual Appliance и LiveCD. И уяснил для себя, в чём их главное отличие:
  1. Virtual Appliance хорош для быстрого развёртывания приложения с последующей донастройкой. Пример: когда нужно развернуть инфраструктурные сервера, которые будут работать постоянно (файловый или почтовый сервер и т.п.).
  2. LiveCD незаменим для задач эпизодического использования, особенно без необходимости сохранения состояния. Один из примеров — live-builder.

Во время написания этой заметки наткнулся на статью в Википедии, где выделены именно эти два типа: Virtual Appliance и LiveCD. Причём, возможность создания Virtual Appliance на базе LiveCD, о которой в ней тоже написано, уже обсуждалась на этой неделе.

 
Добавлено Чт дек  6 16:40:36 ALMT 2012:  
Обе формы имеют свои достоинства. Из достоинств LiveCD можно отметить лёгкость использования в различных системах виртуализации и на различном (реальном) железе. Просто грузишься с образа или оптического носителя, и всё!
LiveCD часто можно использовать и в виртуальной машине, вместе с носителями для хранения данных. Например, виртуальная машина с CD и Жестким диском, с загрузкой с CD и хранением данных на жестком диске. В качестве примера можно привести ZeroShell appliance и Lotus Foundations Start (ныне умерший).
Но есть одно применение, в котором у LiveCD мало шансов: запуск в системах с "лёгкой виртуализацией", т.е. в контейнере, например, OpenVZ. Интересно, возможно ли это вообще?

пятница, 16 ноября 2012 г.

PlayStation2: плохо(?)

Вот совсем недавно я хвалил PlayStation2. Ну как может сложиться плохое мнение о хорошей вещи?
Плохо может появиться тогда, когда ожидание не соответствует действительности. В данном случае, если ожидать, что PlayStation2 можно хорошо использовать как компьютер универсального назначения (опять это слово "писюк").
Немного подробнее:
  1. RAM 32Мб. Даже по временам, когда PS2 разрабатывалась и начала выпускаться, это было смехотворное количество.
    Для "компутера" — мало. А для PlayStation2 — хватает. Впрочем, хватает даже Linux запустить со стареньким ядром (2.4).
  2. Очень слабый ввод-вывод USB. Так спроектировали: весь ввод-вывод USB, FireWire (в старых моделях) вместе с джойстиками идёт через IO Processor, который есть ничто иное, как MIPS R3000A на частоте 33MHz, хорошо известный как процессор PlayStation1. На такой частоте много не погоняешь, поэтому в PlayStation2 через USB не получить даже скоростей USB1.1.
    Что интересно, вопреки заявлению некоторых товарищей, по документам Sony сетевой адаптер подключен через отдельный чип, а не через IOP. Причём в моделях 70xxx у него есть даже выводы IDE :). Впрочем, его производительность тоже неплохо бы померить.
Таким образом, Sony сделали PlayStation2 малопривлекательной для не-игрового пользователя, что, впрочем, не может остановить "тру-хацкеров" :)

понедельник, 12 ноября 2012 г.

Сколько вешать в граммах?

Введение

Есть такой вопрос: сколько выделить оперативной памяти для виртуальной машины, в которой "крутится" серверная ОС с (фиксированным) серверным приложением (AKA appliance)? Этот вопрос возникает регулярно, чаще всего при создании этой самой ВМ.
Как я понимаю, к этому вопросу, как правило, сисадмины подходят либо чисто механически — находят в документации по главному приложению минимальные и рекомендуемые требования по памяти, и выставляют обозначенное количество, либо интуитивно, "на глаз".
Но у скрупулёзных представителей нашего вида может возникнуть желание (и даже зуд!) узнать точно, сколько памяти необходимо и достаточно данному приложению. Тут уже нужен научный подход!
(На всякий случай, поясню, что этот параметр тянет вверх такое бытовое соображение, что "чем больше памяти, тем лучше", а вниз — реальное количество памяти на физических машинах и бюджет виртуальной инфраструктуры.)

Задача и предполагаемое решение

Итак, имеем виртуальную машину с серверным приложением, работающую в нормальном режиме. Требуется узнать, какой минимальный объём оперативной памяти обеспечит её нормальное функционирование.
Решать задачу можно по-разному:
  • найти формулу, подставив в которую параметры текущей системы, можно получить нужное число. Я такой формулы не знаю, и думаю, что она сродни "серебряной пуле", и в природе не существует
  • выяснить эмпирически
Для экспериментального решения нужны методы измерения "нормального функционирования" и, желательно, хорошая экспериментальная установка. Если экспериментальная установка будет плохой, то сам эксперимент превратится из удовольствия в тяжкий труд.

Параметр нормальной работы в условиях ограниченной ОЗУ

В современных системах недостаток оперативной памяти восполняется разделом подкачки (swap). А свободное место в оперативной памяти используется под кэши дисков. Поэтому ориентироваться на объём свободной ОЗУ — весьма неточный подход. В самом деле, в наше время большинство систем, включая даже некоторые встраиваемые системы, в режиме нормальной работы "отсвопливают" часть памяти, принадлежащей работающим программам и файловым системам, размещающимся в ОЗУ (AKA Tmpfs).
Системы, которым не хватает ОЗУ отличаются интенсивной работой с разделом подкачки. Такие системы "задыхаются", постоянно работая с диском, записывая и читая куски памяти, часто одни и те же.
Посмотреть интенсивность работы с подкачкой можно простой командой (Linux):
iostat `tail -n +2 /proc/swaps | cut -d\  -f1`
Возможно даже, что параметра tps хватит, чтобы провести "достаточно научный" эксперимент.

Экспериментальная установка

Чтобы проводить реальные эксперименты, необходимо:
  • иметь возможность запускать ВМ с разным кол-вом памяти (в идеале — возможность автоматически перезапускать)
  • измерять и фиксировать рабочий параметр
Как говорится, "начать и закончить".
Кроме того, чтобы добавить наукообразия, замечу, что для эффективного экспериментирования нужно выработать алгоритм выбора входного параметра (объём RAM). По сути, это задача нахождения корня функции (второй производной воображаемой функции нормального функционирования от кол-ва ОЗУ). Соответственно кандидатами для алгоритма будут метод Ньютона и тому подобные, изучаемые на первом или втором курсе профильного ВУЗа.

Заключение

если осуществить написанное и собрать экспериментальные данные, то можно будет перейти к их анализу, и поискать "серебряную пулю". Есть добровольцы?

понедельник, 5 ноября 2012 г.

пример хорошей популярной тех. статьи

Недавно прочитал статейку о светодиодах, и получил положительное впечатление:
  • статья простая, не усложнена искусственно и не перегружена псевдонаучными рассуждениями
  • имеет небольшое количество теории + очень практична. Автор не считает читателя полным идиотом. За это ему спасибо;
  • имеет большие и заметные знаки STOP в тех местах, где можно напортачить (для тех, кто будет что-то делать руками)
Впрочем, чтобы статья ещё приблизилась к идеальной, нелохо было бы добавить ссылки на статьи "вглубь" для тех, кто заинтересовался всерьёз.

Одним словом, спасибо автору, есть чему поучиться!