?

Log in

No account? Create an account

Entries by category: компьютеры

Arbob Ahmad and Henry DeYoung


http://www.google.com/search?q=Cache%20Performance%20of%20Lazy%20Functional%20Programs%20on%20Current%20Hardware

Cache Performance of Lazy Functional Programs on Current Hardware


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

Существует несколько исследований, показывающих, где и как функциональные языки неоптимально используют ресурсы процессора. Например, в исследовании 2002 года Nethercote и Mycroft исследовали поведение кэша при выполнении нескольких хаскель-программ, и нашли, что ожидания процессора при отсутствии данных в L2 кэше (cache miss stalls) составляли до 60% задержек при работе программ.

Товарищи из Carnegie Mellon решили ещё раз воспроизвести результаты теста 2002 года. Хардвер за десять лет поменялся довольно сильно, и хотелось определить, так ли пессимистично хаскель работает с кэшем второго уровня.

Использовали валграйндовый Cachegrind и Perf, в частности.

Короче, опредилили, что на тех же данных процессор теперь практически не ждёт на миссах в L2. В 2002 году кэша было 256k, а в 2009 году кэша было уже 4 мега.

К сожалению, они ещё внезапно нашли, что дефольтный размер для нового поколения (nursery) в GC хаскеля составляел 256 kb. То есть, старые тесты 2002 года наверняка упирались именно в то, что дефолтные значения были слишком большими для имеющегося размера кэша. В 2009 году этот же размер оказался более приемлемым.

На мой взгляд, эта находка практически полностью переводит обе статьи, и старую и новую, из подобия науки в разряд тыкания палочкой. Авторы старого исследования не заметили, что упираются в nursery, а авторы нового даже не отметили роль влияния GC-опций GHC на скорость программ. Кроме того, за семь лет изменился и характер нагрузки, а считалось всё на тех же тестах с почти теми же параметрами. Ещё одним соображением являются не абсолютные цифры неоптимальностей в хаскель-программах, а сравнения с эффективностью обычных императивных программ, написанных, скажем, на C или C++. Как поменялась относительная эффективность за эти годы? Нет ответа.
As a result, we conclude that the change in L2 cache size is responsible for most of the performance improvement.
Перевожу: «увеличили кэш, стало быстрее работать». Вау.

И всё же, даже до такого уровня исследования абсолютному большинству российских студентов пилить и пилить.

Tags:

Записался волонтёром в школу Марка. Буду помогать в компьютерном кабинете. Теперь каждый четверг примерно полчаса будут уходить на то, чтобы помогать деткам разбираться с виндами.

Первый раз ходил в прошедший четверг. Кроме меня волонтёром вызвался ещё один папа, менеджер в компании, занимающейся сборкой white-label серверов. Потом на эти сервера лепят шильдики Dell и HP, продавая под своим именем.

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

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

О новое поколение, взращенное на тачскринах!
Дальше про UI/UXCollapse )
Сегодня по почте пришёл мой заказ — MacBook Air 11.6".

Смотря на Эйры в магазине, долго сомневался по поводу размера дисплея. У моего верного коня PowerBook G4 12" размер дисплея — 12.1", форм-фактор 3:4. Имея два варианта MacBook Air непосредственно перед собой, сложно было выбрать между дисплеями 11.6" или 13.3" — первый казался слишком маленьким, второй — слишком большим. Скажем так, экран у большого мне нравился больше — сложно не нравить себе больший экран. Но хуже всего было то, что после рассматривания экрана 13.3" казалось, что на 11.6" работать будет невозможно.

Так вот, всё фигня, товарищи. Из-за того, что разрешение 11.6" экрана чуть больше, чем у старой двенашки (1366x768 vs. 1024x768), к экрану привыкаешь буквально в считанные минуты. По экрану можно считать, что 11.6" является достойной заменой 12". Да, размер на полдюйма поменьше, зато разрешение чуть побольше, и оно достаточно компенсирует друг друга. После нескольких минут работы на 11.6" кажется, что всё в порядке и ты работаешь со старой доброй двенашкой.

Резюмирую: если кто с G4 12" переходит на Air, то 11.6" является аналогом 12", ментально ужиматься не придётся.
Перформанс и т. п.Collapse )

Tags:

Начальные симптомы туннельного синдрома у меня появились в конце девяностых. И конечно же, как и все другие будущие пациенты с RSI, я их проигнорировал. В 2000 году oleyka прислала мне клавиатуру Acer Ergo 61 (ошибочно прозванную «13R Future» в Компьютерре), с которой первые симптомы практически исчезли, и я смог ещё несколько лет поработать в своём обычном темпе. Но клавиатура всего лишь позволила мне продолжать травмирующую активность более интенсивно.

А затем наступил звездец. Переработав более суток без перерыва при сдаче релиза, первого сентября 2005 года я не смог почистить себе зубы, так как не сумел открыть зубную пасту. Была дикая боль и одновременно слабость в руках.

Месяц спустя врач, к которому уговорили пойти меня коллеги в Cisco, диагностировал «a mild case of RSI/CTS» (repetitive strain injury / carpal tunnel syndrome). Первые три месяца я практически не прикасался к программированию. Затем ещё полгода делал минимально общественно полезную деятельность: 50 строчек в день считалось удачей. Это с учётом написания писем. Код же, с его постоянными двух- или трёхклавишными комбинациями (скобки, подчёркивания, camelcase) набирать было особо неприятно. Если это считается «mild case», тогда что же такое severe case?..

Зато болезнь помогла мне читать книжки — а что ещё оставалось делать? Так был прочитан завал литературы, выучен Haskell, проштудирован Tufte.


Проверка предрасположенности к RSI у мужчин.
Я пытался применить систему голосового распознавания, но быстро бросил: она посадила мне голосовые связки так, что я не мог разговаривать в голос. Оказывается, у людей с врождённой предрасположенностью к RSI (предрасположенность проверяется путём доставания большим пальцем запястья той же руки), голосовые связки очень быстро садятся от постоянной активности. Так что, voice recognition мне не помог. Единственное, что осталось от этого эксперимента — неплохая USB-гарнитура, которую использую для Skype-переговоров.

Человеческий организм очень неумело заживляет внутренние травмы, типа RSI: эволюционно человек не предрасположен к монотонной многочасовой деятельности, и у него нет развитых механизмов обнаружения (например, рецепторов боли, как на коже) и лечения внутренних травм сухожильной сумки.

Соответственно, полугодового «отдыха от работы» мне не хватило. Я мог написать 50-100 строк кода в один день, но потом боль не давала мне работать всю оставшуюся неделю. Я пытался отдыхать от клавиатуры неделю, две без перерыва. Работать тыльной стороной ладони — суставом мизинца. Это снимало боль, но как только я начинал программировать, боль возвращалась буквально через несколько написанных строк.

Позволить себе год держать руки абсолютно без травмирующей активности я не мог — или по крайней мере думал, что не мог. Кроме того, в 2006 у меня родился сын.

В конце концов, после многих экспериментов с тем, сколько же я «теперь» могу работать, с периодами воодушевления (о, я уже второй день не чувствую боли!) и разочарования (уже неделю отдыхаю, но попытка нажать клавишу всё равно ведёт к болезненным ощущениям), у меня сформировалась некоторая система. Система не привела к тому, что у меня пропал RSI. Система другого рода — она позволила планировать мою активность, знать, сколько я могу работать, и точнее предсказывать сроки, в которые работа будет завершена.

Сначала замечу, что RSI почти не лечится, или лечится десятилетиями. То, на что вы можете рассчитывать — это законсервировать процесс на текущем уровне. Главное, что может в перспективе хоть как-то помочь — это прекращение травмирующей активности, то есть программирования и работы с клавиатурой. Уйдите в менеджмент, в конце концов: email меньше травмирует, чем кодирование кода. Используйте менее многословные языки программирования, например функциональные языки программирования, Perl. В этом отношении PHP лучше, чем многословная Java, а Haskell лучше, чем PHP.

Рекомендую книгу Dr. Pascarelli's Complete Guide to Repetitive Strain Injury: What You Need to Know About RSI and Carpal Tunnel Syndrome.

Так вот, нехитрый список правил того, как жить с RSI:
  1. Мышку использовать нельзя. В списках причин RSI мышь стоит на первом месте. В опросниках у врачей по поводу RSI мышь стоит на первом месте: «Используете ли вы компьютерную мышку?» Используйте точпад. У меня есть точпад и планшет, но планшет мне неудобен для повседневной работы всё-таки. Некоторые говорят, что приноровившись, планшет эргономичнее. Чем что? Чем мышка — конечно. Чем точпад? Сомневаюсь.
  2. Используйте vi, а не Emacs. Многоклавишные комбинации вредят эргономике процесса http://xahlee.org/emacs/emacs_hand_pain_celebrity.html
  3. Коротко стригите ногти Обрезайте ногти под ноль. Два миллиметра — уже много. Нажатие на клавиатуру подушечками пальцев щадит связки сильнее, чем нажатие или задевание части поверхности клавиши ногтями.
  4. Используйте клавиатуру с мягким ходом клавиш, без «дребезга» и щелчков. Шелчки передаются связкам и травмируют их.
  5. Сухожилия давят на сухожильную сумку и перетирают, раздирают её изнутри. Вывод: нужно держать руки так, чтобы сухожилие не проходило в запястье под углом. Эргономические клавиатуры нехило помогают, но не все клавиатуры, на которых написано «Ergonomic» являются такими. Например, клавиатуры с верхним рядом клавиш, расположенным выше (дальше от поверхности стола), чем нижний, такими не являются. Некоторые модели Kinesis рулят, Acer Ergo 31/61 рулит (но её невозможно достать). В крайнем случае, если уж совсем ничего нет, сойдёт Microsoft Ergonomic Keyboard.
  6. Печатайте размеренно, в одном ритме и подчёркнуто медленно. Старайтесь делать одинаковые интервалы между нажатиями клавиш, и не допускайте особо вредных взрывных нагрузок, когда после относительно долгого обдумывания строчка или токен набиваются моментально, одним проходом рук. Лучше помедленней набрать, чем сорвать руку таким образом.
  7. Для того, чтобы кисти приучались не изгибаться в процессе работы, нужны развитые кости и мышечный корсет. Если вам до 25 лет — идите в качалку, тренируйте мышцы рук. Это будет способствовать развитию костей. Если вы старше, то кости уже сформировались, и изменить их практически невозможно. Так что берите PowerBall и/или занимайтесь спортом, адресно тренирующим мышцы кистей: скалолазание или бадминтон, например. Не теннис.
  8. Будете использовать PowerBall — используйте без фанатизма. Регулярное превышение 6-8 тысяч оборотов на нём вам сделает RSI, если его даже не было. Для того, чтобы укрепить мышцы, надо систематично крутить его на относительно небольших оборотах: «столько, пока комфортно терпишь, плюс ещё тридцать секунд».
  9. Рука в процессе работы не должна лежать на клавиатуре или столе, а должна держаться на весу. Класть руку на подушку клавиатуры или на стол можно только если в это время не происходит нажатий на клавиши.
  10. Для больших движений используйте большие мышцы, для малых — малые. Это значит, что набирать на верхних рядах клавиш нужно перемещая всю руку, а не путём доставания до крайних рядов клавиш вытягиванием пальцев. Во время печати кисть не должна двигаться влево-вправо или вниз-вверх, следите!
  11. Сплинты — это такие медицинские перчатки без пальцев, укрепляющие кисть. Использовать их при работе нельзя, они приводят к деградации мышц при относительно недолгом использовании. Через неделю работы в сплинтах мышцы атрофируются настолько, что есть шанс совсем не суметь работать без сплинтов. Сплинты можно иногда использовать на ночь, чтобы во время сна не перегибать кисть. Но в конце концов надо от сплинтов избавиться. Я был только первые полтора года в сплинтах — спал в них, и лишь очень изредка работал.
  12. Ибупрофен — копеечное, но очень действенное лекарство, с минимумом побочных эффектов. Оно эффективно снимает боль и обладает противовоспалительным эффектом. Оба свойства подходят для снятия симптомов боли и/или онемения. Но использовать его во время работы нельзя — воспаление-то оно чуть притушит (хорошо), но симптом боли снимет. В итоге вы не будете чувствовать, когда требуется срочно прекращать активность. Короче, если пользоваться ибупрофеном — а на начальных этапах лечения именно его и рекомендуют — ибупрофен надо принимать после травмирующей работы, или перед сном. Чтобы боль во время работы никуда не исчезала и была индикатором того, что надо завершать процесс.
  13. Перед работой руки следует прогревать. Сначала тёплой водой под краном, затем разминающие, разогревающие мышцы и чуть-чуть растягивающие действия кистями.
  14. Не работайте на ноутбучной клавиатуре, и тем более, не работайте на ноутбуке лёжа. День работы на ноутбуке мне стоит трёх дней отходняка.
  15. Алкоголь дополнительно повреждает нервы в воспалённом районе кисти и, похоже, смазку сухожилий. FYI: пить вредно.

Следуя этой системе, теперь — через пять лет после пика травмы — я могу ежедневно писать до 100 строк кода или пропорциональное количество плейнтекста, не боясь долгое время провести в отходняке. Ну или можно написать до 300 строк, если знать, что следующие два-три дня можно устроить себе выходной и «отлежаться».

Tags:

Adam Silberstein, Jeff Terrace, Brian F. Cooper, Raghu Ramakrishnan

http://www.google.com/search?q=pdf+selectively+materializing+user%27s+event+feeds

Feeding Frenzy: Selectively Materializing Users’ Event Feeds


Народ из Yahoo! Research и Princeton University разбирает проблему глобальной оптимизации расходования машинных ресурсов для поддержки передачи реал-таймовых фидов.

Существуют поставщики фидов (те, кто пишет твиты, например, или RSS провайдеры) и есть потребители фидов (аггрегаторы, странички на фейсбуке, поисковые интерфейсы). Каждый потребитель может быть подписан на неограниченное количество поставщиков фидов. Поставщики могут поставлять фиды в реал-тайме (чтобы ембедщики не смеялись под влиянием своей профдеформации, сразу пишу, что вебовый реалтайм — это человеческий реал-тайм: секунды и десятки секунд задержек между отправкой и получения сообщения считается «реальным временем» в современном вебеlionet), а потребители — в реал-тайме же хотят его потреблять. А могут и не поставлять, и, соответственно, не хотеть. Наивно полагать, что в каждом случае, когда потребитель хочет посмотреть на свой фид (френдленту, например), мы должны шерстить базу поставщиков и формировать фид: существуют механизмы кеширования, материализации фидов. Это позволяет потребителям получать уже кешированный фид, практически мгновенно (из кэша).

Теперь проблема: если есть быстрые поставщики фидов и огромное количество не очень часто посещающих свои фиды потребителей, то материализация фидов для такой толпы становится накладной операцией. Например, в твиттере есть такой пользователь «Ashton Kutcher», каждое сообщение которого расходится по «френдлентам» почти пяти миллионов подписчиков. То есть, каждое сообщение от него должно повлиять на миллионы материализованных представлений.

Статья обсуждает следующее решение: что если мы можем выбирать, использовать ли для фида материализованное представление, или нет (идти в сторадж более низкого уровня), базируясь [только] на свойствах пары поставщик/потребитель? По сравнению с другими статьями на эту тему, данная статья демонстрирует, что принятие решения о материализации не может быть принято только на основании свойств поставщика (частоты обновлений, например). Авторы разрабатывают механизм вычисления необходимости материализовывать фид исходя, одновременно, из отношений скорости генерации событий и и частоты их потребления.

Ключевой результат таков: авторы показали, что принятие решений исходя из локальных соображений (свойств поставщика и потребителя) приводит к глобальной оптимизации производительности в целом всей системы поддержки графа передачи информации от поставщиков к потребителям. Авторы демонстрируют это, в частности, экспериментами над своей реальной системой такого рода, которую они разрабатывают и поддерживают в Yahoo.

Авторы вводят понятие k,t-diversity. Неформально это можно понимать так: если приходит событие от Боба в последние t квантов времени, тогда мы не показываем более k событий от Алисы, ежели мы не показываем в это же время событие от Боба.

Рассматриваются две модели когерентности: per-producer и global (эта деталь неважна сейчасlionet). В модели per-producer, стоимость события для конкретного потребителя зависит от частоты актов потребления (рефреша страницы френдленты) и событий поставщика. В глобальной модели когерентности, стоимость события зависит от частоты актов потребления и суммы частоты событий от всех поставщиков событий для данного потребителя.

Что такое стоимость — это выраженная в CPU или в disk IO операциях сложность обслуживания события для системы.

Адаптивный алгоритм, который они предлагают ("правильный" knapsack алгоритм — NP-hard) выглядит примерно так:

We simply sort the pull edges by descending, and shift some number of top-ranked edges to push. Then, if our latency is higher than the SLA, we incrementally shift the top-ranked pull edges to push. If our latency is lower than the SLA, we incrementally shift the lowest-ranked push edges back to pull (note that we never shift edges to pull if they are assigned to push).


От себя:

В этой области всё интуитивно понятно было как оптимизировать и без статьи, но хорошо, что кто-то пошёл и чуть более формально отнёсся к проблеме. Опять же, экспериментальная проверка добавляет уровня доверия результатам статьи. Для эховцев будет небезынтересно поверхностно ознакомиться с параграфами начиная с 4.1 Architecture, в которых рассказывается, как конкретно делается система материализованных представлений на яховской PNUTS.

Tags:

cisco rebranding

http://www.artlebedev.ru/kovodstvo/business-lynch/2008/11/07/

Насколько я помню из материалов, розданных перед ребрендингом, новые палки являются блендом между старым символом моста (Golden Gate) и представлением формы периодического сигнала; всё-таки коммуникационная компания.

Про мост могут клиенты ничего и не знать, а осциллограф видели все.
Обновил табличку тестов быстродействия Erlang'а, добавив C2D ноутбук и специальный Pentium D 930 ящик. Core 2 Duo в макинтошевском ноутбуке оказался быстрее серверного Xeon'а. Чудеса!



UPD: JS-Kit, Erlang, Amazon EC2

Tags:

Закончился последний день работы на Cisco.

Все предыдущие фул-тайм позиции мной воспринимались как "фазы жизни". Вот в этой фазе я работаю-на-компанию-X-и-учусь-тому-то, в этой фазе — рафинирую какие-то другие навыки. Cisco же теперь ощущается как "междуфазовая" компания.

Не знаю, что было бы, если бы не CTS, напрочь покорёживший мою мотивацию ровно через три месяца после начала работы. Даже гадать не буду. Одно хорошо — у Cisco замечательная страховка, и она нам с Ольгой пригодилась по полной. Из тех 28 тысяч, которые насчитал госпиталь за роды, из кармана пришлось заплатить только $45.

Большая компания (60k человек сотрудников) приносит свой опыт. Замечательные, умные, образованные люди, работающие с тобой рядом, и какие-то ту#$%@лые пи%@#@$ы, работающие в соседнем отделе. Всё как и полагается в большой компании.

Но долго между жизненными фазами работать смысла нет, надо выбирать.

Есть скафандр. Путешествия начинаются!

May. 6th, 2007

Однажды, возвращаясь с работы, я усмотрел как высотники ковыряли вывеску Yahoo на одном из офисных зданий.



Покопавшись в новостях и узнав, что Влад и кот собираются стать сотрудниками Microsoft (слухи от Рейтерс, Уолл стрит джорнал), а mclap уже получил свою дозу впечатлений, я решил не отставать от прогресса и тоже установить себе Windows Vista.

Я никогда раньше не имел дела с лицензионными продуктами Майкрософт, кроме того диска с Microsoft Office for Mac, который я в своё время честно спёр с предыдущей работы, так как он был никому не нужен. И уж тем более не покупал ничего сам. Мне стало стыдно за своё тёмное прошлое и захотелось чего-то большого и светлого. Я купил официальный дистрибутив Windows Vista Home Premium. Читать дальшеCollapse )

Tags:

Про JS-Kit опять тиснули в TechCrunch'е: JS-Kit: Web 2.0 For Lazy People.

На этот раз (см. прошлый) флэш-моб эффект публики с TechCrunch'а отгрызает всего лишь примерно пятую часть трафика, так что думать о проблемах масштабирования не приходится.

Мой старый Sun с 600-мегагерцовым процессором сервит ~30 запросов в секунду, из них 45% динамических.

3:42am up 323 day(s), 22:46, 18 users, load average: 0.58, 0.55, 0.54

Tags:

Profile

lionet
Lev Walkin
Website

Latest Month

December 2016
S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031

Syndicate

RSS Atom
Powered by LiveJournal.com
Designed by yoksel