• Экспериментальное определение характеристик кэш-памяти: практикум

      Первая статья об экспериментальном определении характеристик кэш-памяти появилась на свет несколько необычным образом. Играясь с утилитами из lmbench, я получил те самые три графика, и задался вопросом, сколько же информации об исследуемой системе можно из них вытянуть. Определив некоторые характеристики кэша и TLB, я затем задал эти графики студентам как домашнее задание — предвкушая, что им удастся обнаружить что-то такое, что я проглядел. В целом, студенты меня разочаровали, и не заметили даже связь ассоциативности с наклоном ступенек на графике. В конце семестра я собираюсь рассказать им своё решение; а чтобы оно к тому времени не забылось, я написал на скорую руку ту статью.

      Затем Yekver предложил мне идею простой программы для Windows, которая определяла бы характеристики кэша автоматически, не требуя ручного анализа графиков. (Тем более, что версии lmbench для Windows не существует.) Для замера времени будем использовать функцию __rdtsc, которая возвращает 64-битное количество тактов с момента последнего сброса процессора. Сначала определим тактовую частоту процессора, замерив на произвольной нагрузке время выполнения и количество потребовавшихся тактов. Затем для расчёта времени доступа к памяти будем делить количество потраченных тактов на тактовую частоту процессора.

      Подобно прошлому эксперименту, мы будем брать данные различного объёма от 4КБ до 512МБ, и проходить по массиву миллионы раз с последующим усреднением результата. Чтобы минимизировать влияние дополнительных операций в цикле нагрузки, следуя примеру авторов lat_mem_rd, используем для тела нагрузки операцию p=(void**)*p;, которая компилируется в одну машинную команду, и развернём её 256 раз, чтобы возврат к началу цикла выполнялся относительно редко.
      Читать дальше →
    • Экспериментальное определение характеристик кэш-памяти

        В ряде случаев (например, для тонкой оптимизации программы под конкретный компьютер) полезно знать характеристики кэш-подсистемы: количество уровней, время доступа к каждому уровню, их размер и ассоциативность, и т.п.
        Для одноразовой оптимизации необходимые значения можно посмотреть в спецификации на компьютер, но когда требуется автоматическая оптимизация (например, во время сборки и установки программы), характеристики приходится определять косвенно, по результатам прогона специального набора тестов.
        Удобная тестовая программа для Linux — lat_mem_rd из пакета тестов lmbench. Её работа заключается в том, что она выделяет в памяти массив и читает его элементы с заданным шагом, циклически проходя по массиву снова и снова. Затем выделяется массив большего размера, и т.д. Для каждого значения шага и размера массива подсчитывается среднее время доступа.
        Пример графика, который был получен этой программой на реальной системе:

        Как по полученным данным определить характеристики кэша?
      • Colobot и Ceebot

          ГеймпадВ мире всегда существовали некоторые закрытые общества, которые доступны только ограниченному кругу людей. Для того, чтобы попасть туда нужно было обладать чем-то необычным. Например, ездить на Bentley или курить Behike.

          Но я сейчас говорю про общества, где входным билетом служат не деньги, а знания. Да, да, Вы не поверите, но я говорю про программистов.

          Ведь только мы способны сутками заниматься совершенствованием алгоритма, только мы можем бесконечно долго заниматься проектированием и совершенствованием архитектуры проекта, рисуя никому не понятные UML-диаграммы и странные схемы. Но есть еще один вид занятий, некий закрытый клуб для посвященных, который сгубил не одну тысячу часов, подняв профессионализм его участников до небес. Я говорю про Игры для программистов.

          Их существует огромное количество, каждая игра по своему интересна, у каждой своя архитектура, свой API-интерфейс. Так как всех их невозможно охватить в отдельной заметке — я решил начать серию заметок про различные игры.

          P.S. Создал открытый блог Игры для программистов.

          Читать дальше →
        • стихи о нетбуке

            Как хорошо иметь нетбук
            Не выпускать его из рук
            Сидеть повсюду в интернете:
            На кухне, в спальне, в туалете

            Как хорошо иметь нетбук,
            Ведь можно с тысячей подруг
            Общаться в Скайпе и Джимэйле,
            Не вылезая из постели

            Как хорошо иметь нетбук
            Мир отключается вокруг
            Когда ты смотришь сериалы
            С винта, а не телеканала

            Как хорошо иметь нетбук
            Под кожу или под нубук
            Обшиты пафосные штуки
            А я простой, люблю нетбуки
          • Строй Хабра

              Наблюдаю за Хабром уже давно и, кажется, нашел наконец определение царящего тут строя:
              просвещенная дедовщина.

              (не слишком ли много букв «щ»?)

              Для личного блога пойдёт.

              upd спасибо начавшим плюсовать топик, но поосторожнее: что же начнётся, если вдруг на главную попадёт?
            • Мировые шедевры классической музыки без копирайта

                Несмотря на то, что такие признанные классики, как Бетховен, Чайковский, Брамс, Сибелиус жили уже очень и очень давно и их произведения давно не попадают под законы о копирайте, найти их великолепную музыку, распространяемую свободно, практически невозможно. То есть если вы захотите использовать 9 симфонию Бетховена в качестве саундтрека, воспроизвести отрывки из симфоний Чайковского на каком-нибудь мероприятии, вам таки придётся заплатить деньги правообладателям записей, которые вы будете использовать.

                И проблема тут в том, что для того, чтобы выложить классическую музыку в свободное достояние, необходимо, чтобы её кто-нибудь записал и отказался от своих исключительных прав на запись. А поскольку для записи нужен оркестр, то это создаёт некоторые финансовые сложности: целый оркестр и толпа звукорежиссёров вряд ли будут работать за идею.

                К счастью, нашлись энтузиасты из проекта Musopen, которые смогли организовать сбор средств с целью нанять целый оркестр, записать бессмертную классику и выложить её в наилучшем качестве под лицензией CC0, то есть фактически в неограниченное пользование.

                Уже собрано более 41 000 долларов, хотя изначально организаторы рассчитывали только на 11 тысяч.

                Пожертвовать немного денег, а так же ознакомиться с акцией можно на официальной странице. Сбор средств закончится 15 сентября в 6 часов утра по московскому времени, то есть осталось чуть более дня и желающим помочь нужно поспешить.
              • Где программе хранить свои настройки?

                  Есть программа, которая должна сохранять и загружать некоторые настройки: позицию и размер главного окна программы, идентификатор выбранного языка, время последней проверки обновления. Я задался вопросом — где программа должна хранить свои настройки? Решил собрать информацию на эту тему и поделится ею с вами.

                  Возможные папки, для хранения настроек и файлов программы:
                  • Program Files
                  • My Documents
                  • User\Application Data
                  • User\Local Settings\Application Data
                  • All Users\Application data
                  Читать дальше →
                • Создание инсталлятора с помощью WiX. Часть 3

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

                    Читать дальше →
                  • О некоторых особенностях написания дистрибутивных пакетов на NSIS для х64 систем

                      Столкнулся с неожиданным (для меня) поведением NSIS инсталлеров для 64 битных систем.

                      Речь идет об обращении к реестру Windows. Долгое время не мог понять почему некоторые значения из реестра я могу получить стандартными инструментами NSIS, а некоторые другие — не могу.
                      Читать дальше →
                    • Создание многоязыкового инсталлятора для Windows с помощью WiX

                      • Tutorial
                      logoВ этой статье я поделюсь с вами практическим опытом, полученным за много лет создания инсталляторов в Фаматек. Под катом — теоретические выкладки и практические инструкции, как безболезненно и «по феншую», совместимым с «Windows Logo Testing» способом создать инсталлятор, предлагающий пользователю выбрать язык установки и устанавливающий продукт на выбранном языке. При этом используются исключительно бесплатные решения.
                      Ознакомиться с заклинаниями
                      • +23
                      • 14,8k
                      • 3
                    • С чего начать изучение Windows Installer?

                        Installer pic Технология Windows Installer (MSI) является стандартом де-факто в мире системных администраторов, занимающихся распространением и поддержкой программного обеспечения для десктопных и серверных версий Windows. Формат MSI поддерживается всеми крупнейшими системами управления конфигурациями (Microsoft SCCM, CA Unicenter и многими другими), а для некоторых систем распространения ПО — является единственным поддерживаемым форматом.
                        Мой опыт работы с этой технологией — как теоретический, так и практический — приобретен за время работы в компании «Инфопульс Украина» и связан с созданием MSI-пакетов и подготовкой готовых MSI-пакетов к автоматической установке в корпоративной среде.
                        Читать дальше →
                      • Создание инсталлятора с помощью WiX. Часть 2

                          В прошлый раз мы научились создавать простой инсталлятор. Прежде чем двинуться дальше, от простого к сложному, давайте научимся управлять этим самым сложным. А именно — научимся разбивать проект на части с тем, чтобы упростить сопровождение и внесение изменений.

                          Читать дальше →
                        • Создание инсталлятора с помощью WiX

                            Для начала — что такое WiX? Технология WiX (Windows Installer XML) представляет собой набор инструментов и спецификаций упрощающих процесс создания дистрибутивов на базе MSI (Microsoft Installer). Если объяснять проще то это обертка вокруг MSI с человеческим лицом.

                            На мой взгляд изучать проще всего на простых примерах. В данной статье я приведу пример простейшего инсталлятора.
                            Читать дальше →
                          • Что мы знаем и чего не знаем об оценке трудозатрат в разработке ПО

                            • Перевод
                            Подавляющая масса исследований и отчетов подтверждает тенденцию к превышению бюджетов и сроков программных проектов. В среднем, это превышение составляет порядка 30 процентов1. Более того, если мы сравним точность оценивания в 1980-х и ту, которая фигурирует в недавних исследованиях, мы не обнаружим существенной разницы (Единственный анализ, предполагающий существенное улучшение качества оценки, встречается в отчетах Chaos Reports от Standish Group. Однако, это «улучшение», вероятнее всего, проистекает из того факта, что исследователи улучшили качество своих данных, перейдя от излишне перегруженной проблемными проектами, к более репрезентативной выборке2). Методы оценки также существенно не изменились. Несмотря на интенсивные исследования в области формальных моделей оценки, доминирующим методом продолжает оставаться «экспертная оценка»3

                            Очевидное отсутствие прорывов в улучшении методологии оценки трудозатрат, не означает, что мы не стали больше знать об этом. В данной статье, я попытаюсь обобщить некоторые из знаний, которыми мы, на мой взгляд, теперь располагаем. Некоторые из этих знаний могут потенциально улучшить качество оценки, некоторые, по всей видимости, не смогут его улучшить, а некоторые касаются того, что мы знаем о том, чего мы не знаем в отношении оценки трудозатрат при разработке ПО. Все материалы, который я использую, чтобы подтвердить свои тезисы, опубликованы1.
                            Читать дальше →
                            • +24
                            • 19,3k
                            • 9
                          • Классификация видов тестирования

                            Учил студентов предмету «Тестирование и отладка программного обеспечения» в ИжГТУ. Структуру курса обучения построил на основе классификации видов тестирования.
                            Виды тестирования

                            О ней и будет сей рассказ.
                          • Закон Бенфорда и распределения под него попадающие


                              В теории вероятностей и статистике правило первой цифры, или закон Бенфорда, показывает любопытное проявления частот первой цифры данных из реальной жизни. Для школьников и домохозяек этот закон можно вольно сформулировать так: есть наборы данных, у которых первая цифра будет единицей примерно в 6 раз чаще, чем девятка и это соотношение не изменится при масштабировании исходного набора. Более строго можно сформулировать так: набор чисел удовлетворяет закону Бенфорда, если первая цифра d появляется с вероятностью


                              Здесь N – основание системы счисления, должно быть больше 2, далее будем рассматривать 10.
                              Для строгих математиков это правило формулируется так: существуют такие случайные величины, для которых распределение вероятностей дробной части логарифма по любому основанию большему 1 сходится к равномерному на отрезке [0; 1] распределению. Далее я постараюсь писать как можно популярнее и подробнее, укажу примеры, ограничения, применение и случайные величины, для которых закон применим.
                              Подробности
                            • Восемь уроков лидерства от Стива Балмера

                              • Перевод
                              Никто не забудет работу Стива Балмера в Microsoft: он покинул совет директоров компании, чтобы направить свою энергию на владение баскетбольным клубом L.A. Clippers. Давайте изучим опыт колоритного экс-CEO и попробуем извлечь из этого несколько важных уроков.

                              Переведено в Alconost



                              Хотя Стив Балмер покинул топ-менеджмент Microsoft, забыт он определенно не будет. Я внимательно наблюдал за Балмером, пока он управлял Microsoft, и меня многому научили как его успехи, так и его провалы.

                              Мы частенько смотрим на успешных CEO вроде Стива Джобса или Джека Уэлча, считаем их гениями и подражаем им во всем. Так мы переняли у Уэлча метод принудительного ранжирования, оказавшийся одной из главных причин, по которым Microsoft стал утрачивать свои позиции (прим. переводчика: речь о прак­ти­ке деления всех сотрудников на пять категорий от высшей до низшей, когда 10% или 5% слу­жа­щих обя­за­тель­но по­па­да­ют в ка­те­го­рию с самым низ­ким рейтингом. В Microsoft рей­тинг слу­жил ос­но­ва­ни­ем для про­дви­же­ния по служ­бе и пре­ми­ро­ва­ния. Со­труд­ни­ков низ­ше­го ранга, как пра­ви­ло, со временем уволь­ня­ли, или же они ухо­ди­ли сами).

                              Учиться на чужих ошибках часто важнее, чем на чужом успехе, ведь это избавляет вас от повторения чужого болезненного опыта. Что ж, давайте поговорим о вещах, которые я понял благодаря Балмеру и которые оживят мои советы будущим топ-менеджерам.
                              Читать дальше →
                            • Зачем и как использовать визуализацию данных?



                                Медицинские исследователи установили, что если в инструкции к лекарству находится только текст, человек усваивает из нее лишь 70% информации. Если же в инструкцию добавить картинки, человек усвоит уже 95%.
                                Читать дальше →
                              • Моя библиотека для IT-менеджера

                                  С тех пор, как в институте появился предмет маркетинг, я прочёл несколько десятков книг, полезных для проект-менеджеров, стартаперов и руководителей компаний. Лучшие я собрал в небольшую библиотеку и хочу рассказать о них вам. Все эти книги заслуживают внимания и будут вам полезны. О многих вы уже слышали, часть упоминалась на Хабре, но, надеюсь, вы откроете для себя нечто новое из тех 22-х книг, о которых хочу рассказать.

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

                                  image
                                  Читать дальше →