| Дата последнего изменения : | 28.09.2009 01:34 |
Рейтинг |
|
Статья содержит описание сервиса, предоставляющего возможность разработчикам программного обеспечения протестировать свои разработки на различных программно-аппаратных конфигурациях при помощи сети Internet.
В статье рассматривается способ реализации сервиса, а также различные проблемы, связанные с удалённым тестированием производительности программного обеспечения. Результатом проделанной работы является демонстрационный вариант сервиса удалённого тестирования, а также бизнес-план, содержащий ключевые аспекты внедрения предложенного проекта на российский IT-рынок.
Данный сервис участвовал в конкурсе идей по разработке программных сервисов, проводимый Санкт-Петербургским отделением Intel, оказался в числе победителей, и поэтому смысл моего участия в школе сводился к тому, чтобы начать реализовывать этот сервис. Идея сервиса родилась под впечатлением от конкурсов типа Intel® Threading Challenge. Одной из трудностей, с которыми сталкиваются участники, является тестирование своих конкурсных программ на различных многоядерных конфигурациях. Анализ ситуации привёл к пониманию того, что с похожими проблемами сталкиваются и другие люди, а значит, такой сервис может быть востребован.
Суть сервиса заключается в том, что поставщик сервиса создаёт сообщество людей, заинтересованных в тестировании производительности своего программного или аппаратного обеспечения. Новый член сообщества оставляет данные о своей конфигурации в базе данных сервиса. Сервис же предоставляет возможность протестировать производительность ПО члена сообщества на одной из конфигураций другого члена сообщества. Поставщик в свою очередь предоставляет доступ к базе данных со всеми доступными конфигурациями (рис.1).
Рис. 1. Список доступных конфигураций.
Для того чтобы выполнить заявку, клиенту необходимо иметь “часы доступа”, которые могут приобретаться у поставщика сервиса, либо начисляться (с определённым коэффициентом) в том случае, если на конфигурации клиента уже выполнялись задачи других членов сообщества. После приёма заявки она становится в очередь (если данная конфигурация в это время занята выполнением другой задачи), либо сразу начинает выполняться. После выполнения, клиент получает отчет со статистикой загрузки всех ядер, памяти и другой важной с точки зрения производительности информацией (рис.2).
Рис. 2. Отчёт о производительности ПО.
Также в отчет входят какие-либо выходные данные самой программы, чтобы клиент мог убедиться, что она вообще корректно работала.
Таким образом, предложенная концепция может быть представлена в виде следующей схемы (рис. 3):
Рис. 3. Общая концепция сервиса удалённого тестирования производительности ПО.
Условно рынок можно поделить на 3 сегмента: компании занимающиеся разработкой программного и аппаратного обеспечения, различные НИИ и вузы, а также индивидуальные разработчики.
В процессе выбора целевого сегмента рынка мной последовательно оценивались такие аспекты: доступность сегмента, его потенциал и возможность освоения. В результате такого анализа наиболее привлекательным оказался рынок компаний разрабатывающих программное обеспечение и желающих оптимизировать свои продукты под различные аппаратно-программные конфигурации, но не имеющие финансовой возможности приобрести несколько таких конфигураций.
Разработчики аппаратного обеспечения заинтересованы в том, чтобы на их новых разработках тестировалось программное обеспечение, а разработчики программного обеспечения заинтересованы в том, чтобы их код тестировался на различных многопроцессорных конфигурациях. Также такой сервис может быть полезен для разработчиков различных алгоритмов, желающих протестировать производительность своих идей.
На данный момент в мире существует несколько разработок связанных с удалённым тестированием программного обеспечения, так называемые “cloud computers”. Сервис заключается в том, что поставщик создаёт несколько типичных аппаратных конфигураций, а клиент сервиса имеет возможность загрузить своё программное обеспечение на такие конфигурации и протестировать их производительность. Например, такой сервис предоставляют такие компании как: Amazon EC2, Rackspace cloud, Windows Azure, Google APP Engine.
Принципиальное отличие предложенного сервиса от уже существующих заключается в том, что поставщик не создаёт типичных конфигураций, а предоставляет доступ к уже существующим в мире конфигурациям, то есть к компьютерам людей уже вступивших в сообщество. Таким образом, поставщику не нужно тратить ресурсы на создание и поддержку своих конфигураций, а также в разы увеличивается число доступных на выбор конфигураций.
Структура сервиса. Принцип работы.
Сервис может быть разделён на клиентское и серверное приложение. Для уменьшения нагрузки на сервер было решено, что с сервером клиенты будут взаимодействовать только для определения и сообщения о доступности конфигураций, а само задание на выполнение будет пересылаться напрямую – от клиента к клиенту. Таким образом, для работы сервиса нужны протоколы взаимодействия клиента с сервером и клиентов между собой для постановки задачи тестирования на удалённую конфигурацию. Также существует необходимость хранить данные о пользователях в базе данных, то есть необходим модуль базы данных и интерфейс взаимодействия с ней, затем для клиентского приложения необходим интерфейс взаимодействия с пользователем, средство тестирования производительности программного обеспечения, а также модуль безопасности. В рамках хоть и демонстрационной версии проекта, вопрос безопасности тоже был учтён. Таким образом, учитывая вышеизложенные требования, общая структура сервиса может быть представлена следующим образом:
Рис. 4. Схема сервиса
Из рисунка 4 следует то, что процесс постановки на выполнение программы происходит в несколько этапов. Таким образом, принцип работы сервиса может быть отображён с помощью нескольких схем. Предположим, что у нас существует сервер, две конфигурации, одна из которых доступна, вторая находится в пассивном режиме, а в сообщество хочет вступить новый пользователь:
Рис. 5. Регистрация нового клиента.
Выполнив запрос на регистрацию и получив положительный ответ, новый клиент становится членом сообщества, а информация о нём добавляется в базу данных (рис.6).
Рис. 6. Новая конфигурация.
Став новым членом сообщества, конфигурация 3 получает копию базы данных, в которой присутствуют лишь записи об активных конфигурациях. Выбрав необходимую конфигурацию из числа доступных (в нашем случае предположим, что это конфигурация 1) член сообщества посылает тестируемый код на 1 компьютер, после чего получает отчет, о результатах тестирования содержащий различную информацию о производительности протестированного кода (рис.7).
Рис. 7. Постановка задачи на выполнение и получение результата.
Тестирование производительности программного кода
Процесс тестирования производительности программного кода является не тривиальной задачей и зачастую при таком тестирование необходимо участие человека. Мне было необходимо автоматизировать этот процесс, так как тестирование должно было происходить удалённо, без участия человека, то есть существовала необходимость создания некоторого уровня абстракции от типа приложения (графическое, консольное), абстракции от языка программирования, на котором написано приложение и т.д. Также существовала проблема скрытого от пользователя выполнения задач клиента на вычислительной машине другого клиента.
Для тестирования производительности в клиентское программное обеспечение был встроен модуль, отвечающий за постановку задачи на выполнение в системе, замер счётчиков производительности и обработку результатов. Для получения значений счетчиков было решено использовать библиотеку PDH (Performance Data Helper), основу которой составляет pdh.dll, интерфейс взаимодействия с которой представлен функциями API.Такой выбор был обусловлен тем, что эта библиотека имеет простой интерфейс взаимодействия и предоставляется компанией Microsoft бесплатно.
При тестировании производительности программного обеспечения на любой конфигурации необходимо, чтобы во время такого тестирования центральный процессор находился в незагруженном состоянии, так как при загруженном процессоре в измерения различных характеристик вносятся серьёзные погрешности, и результат намного отличен от реальных измерений. Для решения этой проблемы были введены следующие условия, при которых конфигурация становится доступной другим членам сообщества:
При выполнении этих условий на сервер, на котором хранится список доступных конфигураций, поступает сообщение о том, что конфигурация перешла в пассивное состояние и на ней возможно выполнение программного кода. После постановки задачи на выполнение конфигурация снова переходит в пассивное состояние.
Задача скрытного выполнения программного обеспечения и абстракции от типа приложения также является не тривиальной, так как с одной стороны нам необходимо протестировать приложение незаметно от пользователя конфигурации и в то же время обеспечить тестирование любого типа приложения (например независимо от того имеет оно графический интерфейс или нет). Обе эти проблемы не были решены, так как время на выполнение работы было ограничено одним месяцем. Теоретически же проблема абстракции может быть решена с помощью использования так называемой “обёртки” приложения. Например, для решения проблемы можно предоставить пользователю некую библиотеку, которую член сообщества должен загрузить в тестируемое приложение и используя функции из этой библиотеки имитировать управление программой, в частности эмулировать ввод пользователем различной информации, эмуляции вывода на экран и т.д.
Для решения задачи скрытного выполнения можно использовать возможности операционной системы, например не выводить приложение на экран (что и было реализовано) или создать отдельный рабочий стол для тестируемого приложения. Хотя наиболее выгодным решением всех проблем будет являться создание некоторого подобия виртуальной машины, на которой и будут выполняться задачи.
Хранение данных не является сложной задачей (в рамках демонстрационного проекта) для данного сервиса, необходимо было лишь выбрать тип хранилища, и реализовать интерфейс взаимодействия с ним. В качестве хранилища была выбрана база данных SQLlite. Такой выбор был обусловлен тем, что эта база данных имеет наиболее простой интерфейс взаимодействия, распространяется бесплатно и имеет открытые исходные коды.
Протокол взаимодействия систем должен был включать описание взаимодействий:
Таким образом, протокол разбивался на два интерфейса взаимодействия между системами. Для реализации протокола использовалась технология сокетов, в частности библиотека WinSock2, поставляемая и поддерживаемая компанией Microsoft.
В рамках демонстрационной версии сервиса существовало конечное число различных сообщений, которые должны были обрабатываться различными модулями:
а) Клиент - сервер
Таким образом, были описаны пять видов сообщений, описание производилось с помощью уникальных кодов сообщений, которые устанавливались непосредственно в сообщение, в его первые байты.
б) Клиент – клиент
Таким образом, в демонстрационном проекте к клиенту может подключиться любой член сообщества и протестировать программное обеспечение.
Вопрос безопасности в рамках демонстрационного сервиса не являлся главным, однако его необходимо было учитывать, так как он накладывает определённые ограничения на реализацию сервиса и на его структуру.
Важнейшей проблемой безопасности в сервисе удалённого тестирования является проблема исполнение бинарного кода на реальных конфигурациях. Такая проблема нетривиальна по определению и не существует гарантированного метода защиты пользовательских данных от угроз со стороны тестируемого кода, но существует ряд методов способных снизить эту угрозу почти до нуля:
а) “Песочница”
Песочница (англ. sandbox) это механизм для безопасного исполнения программного кода. Песочницы часто используют для запуска ранее не тестируемого кода, непроверенного кода из неизвестных источников, а также для запуска и обнаружения вирусов.
Песочница обычно предоставляет собой жёстко контролируемый набор ресурсов для исполнения гостевой программы — например, место на диске или в памяти. Доступ к сети, возможность сообщаться с главной операционной системой или считывать информацию с устройств ввода обычно либо частично эмулируют, либо сильно ограничивают. Песочницы представляют собой пример виртуализации. Однако повышенная безопасность исполнения кода в песочнице зачастую связана с большой нагрузкой на систему, что может вносить погрешности в расчёты производительности программного обеспечения.
б) Виртуальная машина
Виртуальная машина схожа с песочницей, однако для виртуальной машины эмулируется полностью вся аппаратно-программная конфигурация клиентской ЭВМ. Виртуальная машина почти полностью решит проблемы защиты конфигураций от вредоносного кода, в таком методе существует возможность создать исходный образ виртуальной машины, который будет загружаться при запросе на тестирование кода, и возвращаться в исходное состояние после выполнения различных задач.
Однако такой метод полностью противоречит концепции сервиса, так как предполагается, что программное обеспечение будет исполняться на реальных аппаратно-программных конфигурациях.
в) Организационные методы
Также как и предыдущие два метода этот метод не является панацеей, однако такие методы являются наиболее возможными для данного сервиса. Так как программный код может тестироваться только на конфигурациях членов сообщества, необходим тщательный сбор информации и контроль над новыми клиентами. Такие меры возможны, так как целевым сегментом рынка являются компании занимающиеся разработкой программного и аппаратного обеспечения в РФ. Таким образом, основными клиентами сервиса являются компании, значит, существует возможность заключения некоторого договора на оказание услуг юридическому лицу, также существует возможность проверки лицензии регистрируемой компании. Но такие меры усложняют процесс регистрации новых пользователей, что может негативно сказаться на объёме клиентов.
Одним из условий защиты проекта была также подготовка бизнес-плана. Подробно об этом писать здесь, пожалуй, не стоит. Приведу самые интересные факты. Период окупаемости сервиса был оценён в 1,5 года. При этом учитывались аренда офиса, заработная плата для нескольких человек, издержки на раскрутку сервиса и т.д. Стоимость часа доступа к сервису была принята в 1,10$ или 37 рублей.
Пока данный проект реализуется только под OC Windows. И сервер, и клиент пишутся на C++. Пока конечно и интерфейс, и протоколы, и механизмы безопасности далеки от совершенства. Все эти недостатки планируется устранить в ходе дальнейшей работы над сервисом. Также интересны пути увеличения информации, собираемой о тестируемом приложении. Вот здесь, в соседней статье, говорится о том, что Parallel Inspector можно запускать и из командной строки, без MS Visual Studio… Возьму на заметку ;-)
За время Летней школы поставленная цель была достигнута, и к её окончанию была готова демонстрационная версия сервиса. Были реализованы протоколы взаимодействия между модулями системы, разработана основная структура системы, также был составлен и проработан бизнес план. Стоит заметить, что реализация моего проекта была начата прямо на Школе, т.е. с нуля, в отличие от остальных финалистов конкурса. Поэтому впереди ещё много работы.
Шудрак Максим является студентом Сибирского Государственного Аэрокосмического Университета, в городе Красноярске, участвовал в Летней школе компании Intel в городе Санкт-Петербурге. Помимо огромного количества полезной информации, навыков и умений, полученных во время прохождении Летней школы, я познакомился с одним из самых прекрасных городов в мире – Санкт-Петербургом.
| 03.10.2009 05:24
Илья Тришин
|
Интересная статья, возник ряд вопросов: "Для решения этой проблемы были введены следующие условия, при которых конфигурация становится доступной другим членам сообщества: * Загруженность процессора должна составлять не более 5 %. * От устройств ввода не поступал сигнал более десяти минут." 1. Вы смотрели среднюю загруженность обычных компьютеров? Как часто она меньше 5%? Мне кажется было бы полезно провести подобное тестирование, чтобы понять вообще, доступность компьютеров "сообщества", может получиться так, что доступными будут только компьютеры, которые вообще никто не трогает, а если где то открыть пару окошек браузера, MS Office и аську, то загрузка уже скорее всего не будет меньше 5% 2. А что произойдет если во время тестирования загрузка процессора другими приложениями (не тестируемыми) превысит 5%? Или начнут поступать сигналы ввода? Тестирование может быть уже не оптимальным. А что делать с оплаченными часами? Или тот, кто заплатил будет запускать тестирование кусками? "В процессе выбора целевого сегмента рынка мной последовательно оценивались такие аспекты: доступность сегмента, его потенциал и возможность освоения. В результате такого анализа наиболее привлекательным оказался рынок компаний разрабатывающих программное обеспечение и желающих оптимизировать свои продукты под различные аппаратно-программные конфигурации, но не имеющие финансовой возможности приобрести несколько таких конфигураций." 3. Не совсем понятно про целевую аудиторию, должно быть 2 типа участников: те, кто хотят что-то протестировать и те, у кого есть различные платформы. Небольшие компании - разработчики программного обеспечения - это первые или вторые, или и те и другие? Если и те и другие, то вряд ли среди них найдется много владельцев редких платформ, и если у кого-то они и будут, то спрос на них будет огромный, а все остальные со своими типовыми платформами будут простаивать. Если же это исключительно заказчики, то кто будет предоставлять свои компьютеры для тестирования? Если у какой-то крупной компании есть много редких платформ, то смысл ей за 37 рублей в час кому-то их давать? Да еще в это время и самим не иметь возможности тестировать что-либо на них, дабы не "потревожить" важного клиента :) "Период окупаемости сервиса был оценён в 1,5 года." 4. Что именно оценивалось? Если купить компьютер и отдать его на круглосуточную работу только под этот сервис, то компьютер стоимостью 30,000 рублей окупится через 33 дня, при условии постоянной загрузки. Но маловероятно, что это будет востребованный компьютер, при стоимости 30,000 рублей. 5. Таким образом, идея интересная, но возникает ощущение непродуманности, или все секреты скрываются в этой статье и на самом деле все совсем по-другому? 6. Правильно ли я понял, что пока результатом данной работы явилось создание пары программ для запуска приложений по сети на Windows? |
| 04.10.2009 05:28
shmaxim
|
Начну отвечать с конца :-) 6. Да, вы правильно поняли, результатом работы стали пара программ под Windows.Мы не стали их выкладывать на обозрение, так как они пока недостаточно проработаны. 5.Да, безусловно, продуманно далеко не всё, проект находится в зачаточном состоянии, даже после реализации такого сервиса будет необходимо на несколько месяцев (может больше) дать возможность членам сообщества бесплатно пользоваться этим сервисом. 4. "Период окупаемости сервиса был оценён в 1,5 года, то есть при сумме инвестиций X требуемых для развёртывания данного проекта, при цене 37руб/ч вложенная в проект сумма вернётся через 1,5 года. Можно было бы взять период окупаемости в 1 год, но в таком случае было бы необходимо повышать цену за пользование сервисом. 3. Конечно привлекать надо будет и тех, и других. Разработчики ПО - это те, кто хотят что-то протестировать )) Конечно ничто не мешает им тоже предоставлять свои конфигурации для тестирования. На самом деле даже конфигураций с обычными процессорами может быть много: разные ОС, разные видеокарты, разные разрешения экрана, разные версии DirectX... Например, мне надо протестировать работоспособность программы под чисто английской 64-битной Windows Vista. Вопрос может быть не в производительности, а даже просто в корректности работы. Вместо того, чтобы искать такую ОС, ставить её (возможно даже на незаконных основаниях), я могу абсолютно легально запусить свою задачу там, где она уже стоит. Можно привести и другие ситуации, которые возникают у разработчиков ПО. Насчёт отдавания своих систем в пользование за 37 руб/час. Сомневаюсь, что многие используют свои компьютеры 24 часа в сутки. Можно оставлять компьютер с работающим клиентом сервиса на ночь. Получаем дополнительный, ничего не стоящий, заработок. 2. Если загрузка процессора во время тестирования превысит 5% то задача должна быть остановлена до “лучших” времён :-) (то есть до того пока загрузка процессора опять не станет ниже 5%).При этом время тестирования определяется, как время чистого выполнения тестируемого кода на какой-либо конфигурации. При такой ситуации необходимо провести исследование, чтобы понять: нужно ли заново запускать тестирование ПО, либо можно возобновить эту задачу. 1. Порог в 5 % был взят только в качестве эксперимента, для определения оптимального числа я считаю необходимо провести большое количество тестирований (нужно чтобы сервис поработал в тестовом режиме) . Так же я считаю возможным определить погрешность, которую вносят другие активные приложения на тестируемый код. |
| 04.10.2009 06:20
ksili
|
Кроме разработки собственно сервера и клиента было проведено ещё некоторое предварительное исследование рынка. В результате этого изменилась даже суть сервиса. Сначала предполагалось, что поставщик сервиса будет и владельцем предоставляемых конфигураций, т.е. проблемы привлечения владельцев вычислительных систем не было, и проблемы посторонней нагрузки тоже. Однако выяснилось, что подобные сервисы уже есть (примеры в статье). Поэтому, было решено изменить структуру сервиса так, что владелец сервиса будет только управлять взаимодействием владельцев конфигураций и желающих ими воспользоваться. Т.е. стоимость каких-либо конфигураций при расчёте срока окупаемости не учитывалась. Цена была выбрана исходя из простого принципа - немного дешевле, чем у конкурентов. В принципе она может быть и не одинаковой для всех. |
| 04.10.2009 17:16
Илья Тришин
|
Спасибо, стало немного понятнее. Значит окупаемость сервиса - имеется ввиду исключительно для владельца сервиса? Не совсем понятно, какие же должны быть вложения, чтобы 1,5 года окупался сервис, ведь по идее, все что надо владельцу сервиса - выделить сервер, координирующий работу сервиса. Видимо есть что-то еще, и принцип расчета времени окупаемости является закрытой информацией По поводу "занятости" процессоров - главное, как я понял, тестирование. По поводу ночных тестов - если компьютер принадлежит интернациональной компании, то, часто бывает, что днем его используют в одной стране, ночью - в другой, а небольшие компании или владельцы домашних компьютеров, могут захотеть сэкономить электроэнергию ночью. Чтобы тестировать на разных операционных системах есть несколько бесплатных виртуальных машин, и при желании можно на них поставить 30-дневную версию Windows без активации или посмотреть за сколько часов тестов окупится та или иная ОС. Также на них можно смотреть разные DirectX. Идея использования сервиса для тестирования на разных разрешениях экрана мне до конца не понятна. В целом получается, что при таких условиях сервис больше будет пригоден для тестирования возможности запуска приложений на разных платформах, а не для тестирования производительности. |
| 05.10.2009 02:38
ksili
|
> Значит окупаемость сервиса - имеется ввиду исключительно для владельца сервиса? Не совсем понятно, какие же должны быть вложения, чтобы 1,5 года окупался сервис Оценивались вложения на разработку и раскрутку сервиса. > В целом получается, что при таких условиях сервис больше будет пригоден для тестирования возможности запуска приложений на разных платформах, а не для тестирования производительности. Как раз виртуальные машины, которые вы предлагаете как замену такому сервису, больше подходят для тестирования возможности запуска и работоспособности (корректности работы). А вот мерять реальную производительность на них вряд ли удастся. Тут больше подойдёт предлагаемый сервис. |
| 13.10.2009 06:45
Dmitriy Vyukov
|
Было бы полезно. Ставлю 5 звёзд. Сам думал о такой идее, но несколько меньших масштабов. Доступ к множеству различных платформ имеют единицы, а тестировать было бы полезно. |
| 13.10.2009 23:18
spaun2002
|
Хотелось бы высказать свое скромное мнение разработчика :) При тестировании производительности ПО меня менее всего интересует график загруженности процессора во время выполнения, тем более под OS Windows. Что меня действительно интересует, это статистика времени выполенния каждой отдельно взятой функции. Время, процент загрузки процессора, количество вызовов. В особо сложных случаях статистика для каждой строки программы. Подобные возможности предоставляет например тот же Parallel Amplifier или AQTime. Проблема, которую я вижу, в том, что подобный анализ загружает процессор на полную катушку и фактически фризит всю систему. При этом занимает достаточно продолжительное время. К тому же задача временного прерывания этого процесса представляется не совсем тривиальной (это я к случаю увеличения "левой" загрузки процессора выше порога в 5%). Как подобная задача ложится на описанную Вами модель сервиса и ложится ли вообще? Мне было бы интересно сгружать подобное тестирование на внешний сервис и не занимать рабочее время разработчиков, которые вынуждены в процессе анализа ходить и пинать воздух. Хорошо было бы "делегировать" подобную работу сервису и в конце дня, например, получить статистику по работе на нескольких платформах. В остатке получаем существенную экономию времени на тестирование, а следовательно и увеличение полезной нагрузки разработчиков. Что-то длинно получилось :) |
| 14.10.2009 04:31
ksili
|
Я рад, что наши предположения о востребованности сервиса находят подтверждение в ваших словах! > При тестировании производительности ПО меня менее всего интересует график загруженности процессора во время выполнения, тем более под OS Windows. Что меня действительно интересует, это статистика времени выполенния каждой отдельно взятой функции. Время, процент загрузки процессора, количество вызовов. В особо сложных случаях статистика для каждой строки программы. Обязательно учтём. Одной из задач Максима на школе было: получить от специалистов Интел как можно больше информации о том, какую максимально подробную статистику можно получить об исполняемом процессе, и как (в том числе с помощью инструментов Intel). К сожалению, большинство, с кем он общался, были специалистами в других областях (насколько я понял). Поэтому он сам в этом разбирался, и мы будем углубляться в этом направлении. Сейчас, мне кажется, что предоставлять статистику по функциям у нас получится. > К тому же задача временного прерывания этого процесса представляется не совсем тривиальной (это я к случаю увеличения "левой" загрузки процессора выше порога в 5%). Конечно, предоставление возможности любому пользователю сделать свой компьютер доступным для тестирования чужого ПО было придумано для облегчения вывода сервиса на рынок. Я лично считаю, что кроме таких конфигураций необходимо наличие в базе сервиса и выделенных систем, т.е. которые будут работать чисто на сервис. Возможно какие-то из них будут предоставлены владельцем сервиса, возможно удастся договориться и с производителями серверов. У них тоже здесь может быть свой интерес. |
| 19.10.2009 09:47
Roman Sharygin (Intel)
|
Интересная статья. * Запуск задач на удаленных машинах при менее 5% загруженности - мне кажется несколько неправильным или неподходящим. А что если пользователь придёт и начнёт активно использовать машину? Легче клиенту заранее продавать свое время, например, найти способ сообщать серверу возможности по запуску сегодня и на сколько часов. * Также, думаю, открыт вопрос по загрузке данных пользователя на тестовую машину. Объем данных может быть очень велик, особенно, если тестовая задача есть "числодроблика" с каким-нибудь сложным вычислением. Тут же стоит вопрос о конфиденциальности самих данных, которые будут скопированы на тестовую машину - а захочет ли пользователь, что бы данные были доступны кому-то ещё кроме него. Тут уже должно быть какое-то соглашение между сторонами. * Отладка. Многим не достаточно знать, что приложение отработало с 34% загрузкой всех ядер и корректно завершилось. Хочется ещё и отладить код, чтобы загрузка была, например, 80%. Как тут быть, предоставлять удаленный доступ на машину? |
| 23.10.2009 04:47
Dmitry Oganezov (Intel)
|
Сложно оценивать эту статью объективно - слишком много знакомых имен и ников в самой статье и в комментариях к ней. Тем не менее, идея подобного грида посещала, пожалуй, в том или ином виде каждого кодера. Сама по себе степень проработки идеи достойна похвалы. Что до практических результатов, то для месяца работы…. Они более чем впечатляют. Вы знаете, я наблюдал за развитием нескольких подобных проектов. К сожалению, не один из них не был доведен до логического конца. А жаль! Удачи вам. |
| 23.10.2009 07:46
ksili
|
> Что до практических результатов, то для месяца работы…. Они более чем впечатляют. Максим мне рассказывал, что на него как на сумашедшего смотрели, когда всё стал делать на С++. Там, где идёт речь о сервисах (или SOA), сейчас балом правят java-исты. |
| 25.10.2009 08:04
shmaxim
|
Хочу поблагодарить всех за комментарии, прошу прощения, что так долго не отвечал, временно находился далеко от Интернета :) >При тестировании производительности ПО меня менее всего интересует график загруженности процессора во время выполнения, тем более под OS Windows. Что меня действительно интересует, это статистика времени выполенния каждой отдельно взятой функции. Время, процент загрузки процессора, количество вызовов. В особо сложных случаях статистика для каждой строки программы. Как подобная задача ложится на описанную Вами модель сервиса и ложится ли вообще? Безусловно, тот функционал, который, имеется у сервиса сейчас, никуда не годится. Необходимо предоставить расширенную статистику (вплоть до каждой строки программы или функции программы) будет возможно с помощью “wrapperа”, то есть пользователь сервиса сможет сам указать, какие участки кода программы ему необходимо протестировать, хотя конечно такая задача в разы сложнее. |
| 25.10.2009 08:05
shmaxim
|
>Запуск задач на удаленных машинах при менее 5% загруженности - мне кажется несколько неправильным или неподходящим. А что если пользователь придёт и начнёт активно использовать машину? Легче клиенту заранее продавать свое время, например, найти способ сообщать серверу возможности по запуску сегодня и на сколько часов. Отличная идея, спасибо :-) предоставить возможность клиенту самому назначать то время, когда машина будет свободна. Я думаю это не сложно реализовать. |
| 25.10.2009 08:08
shmaxim
|
> Также, думаю, открыт вопрос по загрузке данных пользователя на тестовую машину. Объем данных может быть очень велик, особенно, если тестовая задача есть "числодроблика" с каким-нибудь сложным вычислением. По поводу объёма данных, к сожалению, от нас в этом случае мало что зависит, хотя конечно при разработке учитывалось, что нужно стараться минимизировать объём трафик. >Тут же стоит вопрос о конфиденциальности самих данных, которые будут скопированы на тестовую машину - а захочет ли пользователь, что бы данные были доступны кому-то ещё кроме него. Тут уже должно быть какое-то соглашение между сторонами. Я думаю, одного соглашения в этом случае будет мало, необходимы ещё и технические средства защиты информации. >Отладка. Многим не достаточно знать, что приложение отработало с 34% загрузкой всех ядер и корректно завершилось. Хочется ещё и отладить код, чтобы загрузка была, например, 80%. Как тут быть, предоставлять удаленный доступ на машину? Делать удалённый доступ на любую машину пользователя конечно нельзя, такой функционал может предоставляться опционально поставщиком сервиса, на специально созданных для этого конфигурациях. |
| 25.10.2009 08:09
shmaxim
|
> Сложно оценивать эту статью объективно - слишком много знакомых имен и ников в самой статье и в комментариях к ней. Немного вас не понял, в статье( на сколько я помню :-)) имён не упоминалось. >Что до практических результатов, то для месяца работы…. Они более чем впечатляют. Ответ: Спасибо за похвалу, могу точно сказать, что все те ребята, кто был в группе со мной по разработке сервисов, очень много работали над своими идеями. К сожалению, не один из них не был доведен до логического конца. А жаль! Ответ: Надеюсь мы будем первыми ) |

ksili
4,113
Статусных баллов:
3,613