Ещё одна священная война: mainframes vs x86 servers
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Что именно делает list prefetch?
Update: прочитал тут
http://www.db2mag.com/story/showArticle ... D=51200277
Некая схема оптимизации некоторых запросов
Спорная, хороший buffer cache может сделать всю описанную в статье затею просто ненужной. В каких то случаях это может быть полезно. Обычная фича из многих
Я не буду спорить об этом, возможно, она дает выигрыш, только совершенно енпонятно, при чем здесь специфика архитектуры МФ?
тут
http://publib.boulder.ibm.com/infocente ... 024622.htm
утверждается, что list prefetch работает и под Windows
Update: прочитал тут
http://www.db2mag.com/story/showArticle ... D=51200277
Некая схема оптимизации некоторых запросов
Спорная, хороший buffer cache может сделать всю описанную в статье затею просто ненужной. В каких то случаях это может быть полезно. Обычная фича из многих
Я не буду спорить об этом, возможно, она дает выигрыш, только совершенно енпонятно, при чем здесь специфика архитектуры МФ?
тут
http://publib.boulder.ibm.com/infocente ... 024622.htm
утверждается, что list prefetch работает и под Windows
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 13733
- Joined: 16 Jan 2001 10:01
Dmitry67 wrote:А что народ думает о такой идее
Сейчас есть отдельно память, отдельно процы. А что если делать их вместе в виде таких active cells: проц, небольшая память она же кеш, + энергонезависимая копия той же памяти
Такие cells объединяются в гриды с миллионами элементов и неким аналогом общей шины. Каждый cell хранит записи, типа отпечатков пальцев например, 10-1000 объектов. Индексов в такой базе нет
Делаем
select * from Fingerprints where matchlevel(FingerPrint,@Search)>0.99
Команда идет на все процы такой базы. Осталось подождать пару миллисекунд, какой проц поднимет руку - я нашел
Обдумал идею ещё раз.
На этот раз понравилось.
Думаю главное тут - энергонезависимая память и отдельный процессор для перебора в ней.
Каждую ячейку надобно сделать на одноп кристалле. Или по нескольку...
Ячейки - на материнскую плату с координирующем чипсетом.
Снаружи эта куйня подклучается через интерфейс a la SAN, только поумнее, чтобы можно было задавать крутерии поиска с помощью какого-нибудь языка типа SQL или поисковых систем (+something -something...)
Далее - под это дело пишутся драйвера/плюгины для разных систем. Например DB Engine for MySQL, файловые системы, OpenLDAP backend, и проч.
При этом принципиально изменяются подходы к оптимизации запросов: сканирование таблиц становится благом, и т.д.
"Пойду выйду во двор. Пусть ветром пообдует. Что-то много у меня мыслей об жизни..."(c)
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Dmitry67 wrote:А что народ думает о такой идее
Сейчас есть отдельно память, отдельно процы. А что если делать их вместе в виде таких active cells: проц, небольшая память она же кеш, + энергонезависимая копия той же памяти
Такие cells объединяются в гриды с миллионами элементов и неким аналогом общей шины. Каждый cell хранит записи, типа отпечатков пальцев например, 10-1000 объектов. Индексов в такой базе нет
Делаем
select * from Fingerprints where matchlevel(FingerPrint,@Search)>0.99
Команда идет на все процы такой базы. Осталось подождать пару миллисекунд, какой проц поднимет руку - я нашел
как идея - неплохо. но не более. Легко разваливается мыслями о практической реализации..
Что такое "10-1000" обьектов? Размер их может не соответствовать записи (быть меньше чем надо),
2) как туда записывать
3) как обрабатывать сложные запросы с многими критериями - если для етого будет процессор с более умными мозгами наверху - надо думать о коллижн, когда приходит ответ от нескольких сразу или вообще многих
4) сколько ето чудо будет кушать?
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 8881
- Joined: 17 Jun 2003 04:41
zVlad wrote:Можно еще вопрос? А в Windows используется разделение страниц разничными процессами? Как? Что в этом плане дают (если дают) DLL?
Copy On Write, memory mapped files и т.д. http://support.microsoft.com/kb/100635 или, как писал тов. db13, страницы 30-33 PowerPoint презентации http://www.cs.cmu.edu/afs/cs.cmu.edu/ac ... lass18.ppt
Предвосхищая вопрос, в x86 также имеется поддержка виртуальной памяти

-
- Уже с Приветом
- Posts: 7723
- Joined: 29 Mar 2000 10:01
- Location: Kirkland,WA
A. Fig Lee wrote:Dmitry67 wrote:А что народ думает о такой идее
Сейчас есть отдельно память, отдельно процы. А что если делать их вместе в виде таких active cells: проц, небольшая память она же кеш, + энергонезависимая копия той же памяти
Такие cells объединяются в гриды с миллионами элементов и неким аналогом общей шины. Каждый cell хранит записи, типа отпечатков пальцев например, 10-1000 объектов. Индексов в такой базе нет
Делаем
select * from Fingerprints where matchlevel(FingerPrint,@Search)>0.99
Команда идет на все процы такой базы. Осталось подождать пару миллисекунд, какой проц поднимет руку - я нашел
как идея - неплохо. но не более. Легко разваливается мыслями о практической реализации..
Что такое "10-1000" обьектов? Размер их может не соответствовать записи (быть меньше чем надо),
2) как туда записывать
3) как обрабатывать сложные запросы с многими критериями - если для етого будет процессор с более умными мозгами наверху - надо думать о коллижн, когда приходит ответ от нескольких сразу или вообще многих
4) сколько ето чудо будет кушать?
Keyword: map reduce
There are at least couple of implementations out there. For example,
http://labs.google.com/papers/mapreduce.html
-
- Уже с Приветом
- Posts: 7412
- Joined: 03 Apr 2004 09:35
- Location: 1st Rock From The Moon
zVlad wrote:В системах на МФ, в процессе конфигурирования системы указывается какие именно области памяти следует разделять. Например в z/VM когда мы описываем хранимую систему мы указываем диапазоны страниц которые мы хотим разделять. Во время инициализации ВМ вся ее виртуальная память индивидуальна, во время же загрузки хранимой системы те страницы которые были объявлены разделяемыми "мапятся" на одну и ту же реальную память для всех ВМ использующих одну и ту же хр. систему.
Можно еще вопрос? А в Windows используется разделение страниц разничными процессами? Как? Что в этом плане дают (если дают) DLL?
В Win95/98/Me можно распределить кусок разделяемой памяти из кучи, и адрес останется правильным во всех процессах. По-моему, это работает только для памяти выше 2ГБ. В WinNT/2K/XP просто так шарить память нельзя, для этого есть memory-mapped files. DLL в Win95/98/Me общие, для экономии памяти, а в WinNT/2K/XP грузятся в адресное пространство каждого процесса. Насчет виртуализации процессора и устройств я не знаю, но память начиная с защищенного режима i386 виртуальная (а это 1985 год между прочим), про это знает каждый замороченный писюками пацан в круглых очках и розовых штанах. Начиная с i386 на x86 стали смотреть как на нормальную industry-grade архитектуру.
-
- Уже с Приветом
- Posts: 15420
- Joined: 30 Apr 2003 16:43
- Has thanked: 1 time
dB13 wrote:zVlad wrote:KP580BE51 wrote:Тоже самое. Если у меня запушено куча bash, то нафига мне их всех держать в разной физической памяти?
Вот такие ответы меня как раз и не устраивают. Под таким "тоже самое" могут на самом деле скрываться совершенно разные вещи. У меня сейчас нет времени писать как это делается на МФ. Вот если бы Вы добавили несколько фраз о том как это делается на x86, то это было бы здорово.
http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f04/lectures/class18.ppt
Особенно страница 35: fork() and copy-on-write (COW).
Я просмотрел предложеные материалы. Наибольшую ценность для меня на самом деле представили страницы описывающие механизм витруальной памяти, про fork() я в курсе, но это системная функция, же аппаратная. Где бы побольше узнать о MMU?
Ну и поскольку у нас "священная война" я просто обязан дать свое сравнение с МФ.
Вот казалось бы ну что может быть такого в виртуализации памяти. Действительно дайте мне механизм преобразования виртуального адреса в реальный и сигнал когда виртуальной страницы нет в реальной памяти. Дайте поддержку набора атрибутов (dirty, accessed, read/write, etc...). Все остальное можно запрограммировать в супервизоре памяти. Такое примерное состояние как понял из просмотра предложенного case study имеет место быть в Р6.
Если же мы посмотрим на эту же область архитектуры МФ, то мы увидим много дополнительного к вышеперечисленному. Во-первых мы увидим 5-ть поколений эволюции механизма виртуальной памяти:
- DAT-box 24 бит виртуальная память. Это примерно то что я вижу у Р6 за исключением размера адреса. Те же две таблицы (2-level Page table Structure), только на МФ они называются таблица сегментов и таблица страниц, а у Р6 соответственно директория и таблица страниц. У МФ - это состояние на начало 1970х.
- 2 way DAT-box, позволяет в одной инструкции адресовать два адрессных пространства одновременно. Может это и у Р6 есть, но я этого в просмотренном материале не увидел. Поздние 70-е.
- 2-way, bi-modal addressing. К 24 битовой адресации добавилась 31 битовая. Собственно на поколение не очень тянет. Начало 80-х.
- 4-way DAT-box. Делается доступным четыре адрессных пространства одновременно (это несколько сложнее, но в данном контексте можно сказать и так)ю Начало 90-х.
- 4-way, tri-modal. Теперь мы можем работать с любой адресацией - 24-, 31-, и 64-х битовой. Для работы с 64 бит адресов вводится пятиуровневая страничная структура: к талице сегментов и таблице странц добавляются еще три уровня названные Region 1,2, и 3.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
- 2 way DAT-box, позволяет в одной инструкции адресовать два адрессных пространства одновременно. Может это и у Р6 есть, но я этого в просмотренном материале не увидел. Поздние 70-е.
можно поподробнее? насколько я помню, в 386 можно адресовать память с помощью сегментных регистров, внутри сегментов с помошью смещения. Т.к. сегментных регистров 4, и каждый из них может ссылаться на свое адресное пространство, внутри которого уже действует трансляция виртульного адреса в физический. Таким образом можно увеличить адресуемую память далеко за пределы 4Gb на 386. Другое дело что Win/Linux не используют полностью возможности такой архитектуры. Процесс получает только 4Gb виртуаьной памяти и всё.
Поэтому я еще раз повторю свой тезис - нужно четко разделять возможности железа и OS.
-
- Уже с Приветом
- Posts: 13733
- Joined: 16 Jan 2001 10:01
A. Fig Lee wrote:Dmitry67 wrote:Делаем
select * from Fingerprints where matchlevel(FingerPrint,@Search)>0.99
Команда идет на все процы такой базы. Осталось подождать пару миллисекунд, какой проц поднимет руку - я нашел
как идея - неплохо. но не более. Легко разваливается мыслями о практической реализации..
Подумал ещё.
Теперь основная засада мне видится в ситуации когда запись не найдена.
Если каждая ячейка будет рапортовать "Нету!" - трафик получится приличный. Да и собирать ответы в кучу придётся, убедившись что все проголосовали...
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
-
- Уже с Приветом
- Posts: 13733
- Joined: 16 Jan 2001 10:01
KP580BE51 wrote:Palych wrote:Подумал ещё.
Теперь основная засада мне видится в ситуации когда запись не найдена.
Если каждая ячейка будет рапортовать "Нету!" - трафик получится приличный. Да и собирать ответы в кучу придётся, убедившись что все проголосовали...
Тайм-оут?
Медленно и/или ненадёжно.
Last edited by Palych on 22 Jun 2007 15:26, edited 1 time in total.
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine