?

Log in

No account? Create an account
в человеческом масштабе - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

в человеческом масштабе [май. 7, 2017|07:25 pm]
Anatoly Vorobey
[Tags|]

(эта запись может быть интересна программистам)

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

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

Архив по размерам - как целый город, а устроен он совершенно нелепо. В нем работает всего один старый больной хромой подслеповатый библиотекарь. По сложным историческим причинам добавить к нему коллег или заменить его невозможно. Когда он получает запрос на выдачу или папку на хранение, он долгие дни и недели идет черепашьим шагом по всему гигантскому архиву, пока ему не попадется нужная полка. В итоге получить папку из архива занимает примерно 4 месяца (!) - а вы тем временем делайте что хотите. Неудивительно, что вы и все ваши коллеги стремитесь как можно больше папок иметь при себе на столе или даже в комнате.

В последние годы, чтобы как-то улучшить скорость работы бюрократов, придумали несколько нововведений.

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

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

И наконец, недавно даже и это улучшили. Начальство догадалось посадить в каждую комнату стажеров, которые с бумагами не умеют еще пока работать, но могут найти в шкафу, что нужно. Теперь, когда вам нужна бумага из чужого кабинета, вы говорите своему стажеру, он звонит туда и говорит с тамошним стажером, и они организовывают пересылку всего содержимого папки по факсу. Вашим коллегам даже отвлекаться не надо. Папка у вас на столе через 30-40 минут. Еще быстрее работа пошла.

----------------------------------

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

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

Чтение папки, которая у вас в руках - это работа с данными, которые уже лежат в регистрах процессора. Найти папку на столе - это прочитать данные из процессорного кэша (неважно какого, L1/L2/L3 - 10 секунд это усредненные данные). Канцелярские шкафы в вашей комнате, найти папку в которых занимает минута - это рабочая память, RAM.

Архив с полуслепым инвалидом, который 4 месяца ищет вашу папку - это жесткий диск. Новый современный архив, из которого папка приходит за день-полтора - диски SSD.

Телефонная связь вместе с факсом - это быстрая локальная сеть. Переслать папку по факсу - прочитать данные из памяти другого компьютера, который расположен на одной локальной сети с вами. Наконец, стажеры - это технология RDMA, позволяющая читать через сеть память другого компьютера напрямую, не отвлекая тамошний процессор.

----------------------------------

Основные идеи, которые должен продемонстрировать этот рассказ - это насколько быстрее иметь нужные данные в рабочей памяти, чем читать их с диска; а если все же их нет в памяти, то насколько быстрее читать их SSD, чем с HD, и насколько через локальную сеть, чем с любого диска, даже SSD.

Идея не моя - я позаимствовал ее и немного развил из записи в блоге Адриана Кольера. Кстати, один из лучших блогов на свете для интересующихся компьютерными науками.
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: nomen_nescio
2017-05-07 04:30 pm
Здорово!
Следует ли из этого для меня, чайника-пользователя Майкрософт Оффис и Хром, что в моём бюджетном ноутбуке чем больше оперативной памяти, тем лучше?
(Ответить) (Thread)
From: karpion
2017-05-07 04:35 pm
Ну, начиная с какого-то момента увеличение памяти перестанет давать эффект. А вообще - да, чем больше памяти, тем быстрее работает компьютер.
(Ответить) (Parent) (Thread) (Развернуть)
From: karpion
2017-05-07 04:36 pm
Аналогия не очень хорошая, т.к. тут явно просвечивает многопроцессорная система. А там, кроме кэша, есть ещё масса тонкостей, от которых зависит скорость работы.
(Ответить) (Thread)
[User Picture]From: tn
2017-05-07 04:40 pm
Эти идеи стары почти так же, как и все компьютерные науки. Еще сорок лет назад я перелопачивал в Ленинке горы статей, посвященных алгоритмам обмена между внешней и оперативной памятью. Были разработаны сотни алгоритмов, пытающихся эффективно замещать блоки данных, уже вызванных в ОП новыми, попытки определить по предыстории, какие данные следует придержать в ОП, чтобы потом не подкачивать их снова (всяческие FIFO, LIFO и прочие алгоритмы с бесчисленными с вариациями ) . И эта метафора с бюрократом уже была. Я всегда ее применял для объяснения дилетантам. Только я говорил "Представьте, что вы пишете статью в библиотеке, на вашем столе помещается ограниченное число книг, время от времени вы заказываете из архива новую, и вам надо расстаться с какой-то, что лежит на столе" и.т.п, и.тд Короче, это все, как и все остальное на этом свете - уже было.
(Ответить) (Thread)
[User Picture]From: yoksel_moksel
2017-05-07 04:46 pm

Я не программист, хочу понять.

А раньше вы сами работали в разы медленнее, и новый архив ещё не построили, и папок под рукой было меньше, а как не хватало вместительных шкафов в комнате! И ведь как-то справлялись! Почему же сейчас клиенты жалуются на задержки? Что произошло? Может быть вас завалили бюрократическими инструкциями?
(Ответить) (Thread)
[User Picture]From: netch
2017-05-08 04:31 am

Re: Я не программист, хочу понять.

Именно так.
Где были статические страницы - стал Javascript.
Где была графика 320*200 - стала 1920*1080.
Где были простые иконки - стали анимированные.
Где выводилась картинка, перекрывая предыдущую полностью - добавили полупрозрачность.
И тэ дэ и тэ пэ.

Зато, где во времена моего школьного детства надо было ещё суметь найти компьютер, а затем скорее всего кормить его перфокартами - сейчас почти любому школьнику доступно считать задачки в сотню раз сложнее с мгновенным рисованием красивых графиков.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: freedom_of_sea
2017-05-07 04:54 pm
никогда не задумывался что сеть быстрее чем seek time
(Ответить) (Thread)
[User Picture]From: livelight
2017-05-09 06:54 pm
Латентность round-trip у сети - тоже далеко не фонтан. Зато пропускная способность нынче хорошая.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: shlem59
2017-05-07 05:02 pm
А вы уверены, что чтение по локальной сети даже из RAM соседнего компьютера быстрее чем чтение из собственной SSD?
И если да -то насколько быстрее?
(Ответить) (Thread)
From: karpion
2017-05-07 05:16 pm
Подсказка: среднее время дисковой операции с HDD (при одном диске, без RAID) - это половина оборота диска плюс ещё что-то, причём первое слагаемое тут самое большое. Средняя скорость вращения дисков - от 5'400 до 10'000 оборотов в минуту (в секунду - считайте сами).

А вот у SSD этой задержки нет, там ничего не крутится, так что надо смотреть по скорости передачи данных.
У SSD другая особенность: у него запись существенно медленнее чтения. И если записывать надо много, то SSD Не успевает обнулять секторы, что ещё сильнее снижает скорость.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: thedimka
2017-05-07 05:03 pm
хочется сказать что это не новая метафора, но это уже сказали.
этим видимо она и хорошая, раз многим людям пришла независимо.
(Ответить) (Thread)
[User Picture]From: moon_aka_sun
2017-05-07 06:48 pm
Да, было уже такое, не на примере бюрократов, но время компьютерных устройств, масштабированное к человеческим меркам, начиная с секунды, внушает.

Зато я сегодня узнал что процессор не только делает xor eax,eax быстрее, чем mov eax,0, потому что команда короче и как бы только регистры, но и оказывается, он вообще распознаёт, что это просто надо в eax поместить ноль, и более того, он даже этого не делает, а просто переименует регистр! Внутри процессора, Карл! Один и тот же eax в разных командах обозначает разные регистры и всё это работает параллельно. Вот молодцы!

Edited at 2017-05-07 18:51 (UTC)
(Ответить) (Thread)
From: (Anonymous)
2017-05-07 07:58 pm
А это точно должно быть интересно именно программистам? Просто стиль изложения скорее намекает на информацию для широкой публики. Вроде бы все примазанные к IT и так представляют масштаб проблемы, а уж иерархию скоростей доступа, кажется, суют в любой мало-мальски значимый курс по архитектуре чего угодно
(Ответить) (Thread)
[User Picture]From: occuserpens
2017-05-07 08:18 pm
[прочитать данные из памяти другого компьютера, который расположен на одной локальной сети с вами]

Причем тут телефон, факс и слепой инвалид?! В виндах есть шерные драйвы, а это что такое с точки зрения программиста? Особенно если не между ВМ на одном физическом компе, а в настоящей сети.

Edited at 2017-05-07 20:20 (UTC)
(Ответить) (Thread)
From: (Anonymous)
2017-05-08 01:29 pm
Это архив со слепым хромым библиотекарем в Новой Зеландии. Вы присылаете запрос в филиал Вашей конторы по факсу, там специальный интерн обрабатывает его, переводит на маори и отправляет библиотекарю в архив. Через 4 месяца, когда придет ответ из архива, его отправят по факсу Вам. Может случиться, что нужный Вам материал оказался у интерна на столе или в шкафу, тогда отправку в архив можно пропустить, но так бывает редко.
(Ответить) (Parent) (Thread)
[User Picture]From: gershshpraihler
2017-05-08 03:56 am
подумал про своё окружение. тут скорее наоборот, чтобы объяснить как работает библиотека они прибегнут к компьютерным метафорам.
(всё равно как мне проще понять ток электрический, чем течение воды)
(Ответить) (Thread)
[User Picture]From: aosypov
2017-05-08 05:35 am
Конечно, проще. В воде турбулентность есть - а в токе?
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: alaev
2017-05-08 06:00 am
Картинка красивая, но чуть-чуть напоминает графики из недавнего поста. 4 месяца по сравнению с 40-50 годами человеческой активности это убийственно много, а разница между диском и памятью для рядового пользователя бывает исчезающе малой.
(Ответить) (Thread)
[User Picture]From: aosypov
2017-05-08 06:40 am
Мерси.
(Ответить) (Thread)
[User Picture]From: nixikanius
2017-05-08 01:01 pm
В книге Брэндана Грега "Systems Performance" есть аналогичное сравнение с нормированием одного такта CPU к 1 секунде:



Edited at 2017-05-08 13:02 (UTC)
(Ответить) (Thread)
[User Picture]From: livelight
2017-05-09 06:09 pm
Тема когерентности всех этих кэшей при записи кем-либо из участников процесса не раскрыта :)
(Ответить) (Thread)
Страница 1 из 2
<<[1] [2] >>