В последнее время часто сталкиваюсь с мнением что будущее за RISC процессорами. Особенно часто в этом контексте звучит что в скором времени ARM вытеснит x86_64 из серверов, рабочих станций и настольных компьютеров. Несогласие с данной точкой зрения и побудили меня написать данную заметку для изложения своего взгляда на ситуацию.
Май 11 2013
SkyUD Server
Апр 15 2013
Переезд на новый сервер
В связи со сносом дата-центра, в котором был расположен наш сервер, осуществляется переезд на новый сервер. В период с 16-го по 31-го мая возможны перебои в работе сайта. Заранее приносим извинения за возможные неудобства.
Обновление от 18-го числа: переезд полностью завершён.
Фев 07 2013
Дела давно минувших дней…
Недавно возникла необходимость повторно запустить свою первую 3D-демку, находившуюся в разработке с начала февраля по конец мая 2006 года. В то время разработка велась на Delphi7 для Window XP SP2 с использование DirectX 9.0c. После завершения разработки собранная демка была заархивирована и длительное время хранилась в файловом хранилище.
При попытке запустить её сейчас приложение немедленно упало без каких либо причин (а ведь работало же). Немного повозившись стало ясно что запускать требуется с режимом совместимости с Windows XP SP2 и отключенным Aero (через флаги режима совместимости). Демка запустилась, но вместо изображения весь экран просто закрасило одним цветом. При попытке перемещаться и/или осматриваться цвет менялся.
Решив все-таки не отступать я начал отладку PIX`ом и обнаружил интересную вещь. Для вывода SAQ (Screen Aligment Quad) использовался нулевой вершинный шейдер (SetVertexShader(Nil)). Исходные вершины предоставляли позицию, нормаль и текстурные координаты. Пиксельный шейдер требовал только текстурных координат. В то время всё работало как часы, но сейчас в пиксельный шейдер почему-то стали передаваться всегда нули. Исправление этой ошибки заняло всего 2-3 минуты, но осадок остался.
Кроме того т.к. сейчас Delphi я уже не использую, то пришлось его специально ставить, а под рукой был только XE3. Я было понадеялся что соберётся и им (код простой, никакого VCL не использует), но и тут меня ждало разочарование. Мало того что новенький Delphi умудрился получить исполняемый файл размером 1034КБ (версия собранная Delphi7 имела размер всего 159КБ), так он еще и отказался работать.
Дек 16 2012
Разработка первой версии CSL завершена
Сегодня было завершено создание первой версии Cat Server Linux – нашего дистрибутива Linux для платформы x86_64, предназначенного для развёртывания серверных приложений созданных на основе CSRTL (и опционально CSO). При создании основной упор делался на минимализм и простоту дистрибутива. CSL занимает на диске всего 6,1МБ, не содержит разделяемых библиотек и при запуске потребляет менее 16МБ ОЗУ. При этом CSL поддерживает работу как с IPv4, там и с IPv6, имеет все необходимые утилиты, Syslogd, SSH-сервер, RSync. Сразу хочу отметить, что CSL не является заменой какому-либо стандартному дистрибутиву, вроде CentOS, и служит сугубо для решения узкого круга задач.
В процессе тестирования дистрибутива проводилось также тестирование уже знакомого нам TCPEcho-сервера, но теперь собранного на базе новой версии CSO.
Ноя 27 2012
Тестирование скорости обработки сообщений в CatServerObjects
Разработка CSO медленно, но уверенно продвигается к своему логическому завершению. И если изначально CSO задумывалась как библиотека для реализации многопоточного асинхронного TCP-сервера, то в процессе разработки она трансформировалась в библиотеку многопоточной асинхронной обработки сообщений с поддержкой работы с файловыми дескрипторами (в том числе со специальными классами для реализации TCP-сервера). Классы связанные с TCP-соединениями и таймера еще не полностью закончены, а вот основная часть уже полностью готова. Недавно я уже проводил сравнение различных интерфейсов передачи сообщений в Linux. Теперь пришло время протестировать скорость обработки сообщений. Для проведения тестирования был избран сценарий обработки echo-сообщений, подробнее о котором далее.
Ноя 09 2012
Сравнительное тестирование механизмов передачи сообщений в Linux
При переработке CatServerObjects столкнулся с необходимостью выбора механизма передачи сообщений между потоками приложения. Для требуемой очереди были сформированы следующие требования:
- FIFO порядок обработки
- Поддержка сообщений различных размеров, но с возможностью наличия верхней границы
- Поддержка блокировки потока на время ожидания данных
- Поддержка работы с EPoll
Окт 18 2012
TCP-echo сервер на основе первичной версии CSO
Окт 17 2012
Годовой отчёт о разработке Cat Framework
Сен 08 2012
Разработка CatServerRTL завершена
При начале работ над сервером для системы обновления остро встал вопрос об создании своей RTL, уж слишком много претензий было в стандартной. Основными из них были:
- Медленная и избыточная реализация threadvar (а через них, как минимум, реализовывался errno)
- Медленная реализация исключений, к тому же требовавшая создания экземпляр класса и как следствие выделения памяти
- Неясное поведение стандартного хипа
По мимо перечисленных были и другие, не столь значимые, проблемы, вроде огромнейших дыр в переводе заголовков Linux (например отсутствие заголовков EPoll). Принимая во внимание сравнительно небольшой объём работы необходимый для создания своей узкоспециализированной RTL, было принято решения начать разработку CatServerRTL.