- 1
- 2
- 3
https://software.intel.com/sites/default/files/managed/2b/80/5-level_paging_white_paper.pdf
http://lkml.iu.edu/hypermail/linux/kernel/1612.1/00383.html
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
https://software.intel.com/sites/default/files/managed/2b/80/5-level_paging_white_paper.pdf
http://lkml.iu.edu/hypermail/linux/kernel/1612.1/00383.html
x86-64 is currently limited to 256 TiB of virtual address space and 64 TiB
of physical address space. We are already bumping into this limit: some
vendors offers servers with 64 TiB of memory today.
To overcome the limitation upcoming hardware will introduce support for
5-level paging. It is a straight-forward extension of the current page
table structure adding one more layer of translation.
It bumps the limits to 128 PiB of virtual address space and 4 PiB of physical address space.
This "ought to be enough for anybody" Â.
https://imgs.xkcd.com/comics/supported_features.png
COWuTEJIbTBOEuMAMKu 11.01.2018 11:52 # −3
Steve_Brown 11.01.2018 12:34 # +1
COWuTEJIbTBOEuMAMKu 11.01.2018 13:28 # −2
cykablyad 11.01.2018 13:34 # +1
COWuTEJIbTBOEuMAMKu 11.01.2018 13:47 # −2
3.14159265 12.01.2018 04:51 # 0
Ну да. Пару лет назад на ГК уже предлагал такую идею.
Использовать 32ю-битную адресацию в x64.
Вот прям сейчас на моём десктопе ни одному из работающих процессов не нужно более 4х гиг памяти.
Если даже в 2к18 хватает 32 бит на процесс, зачем тогда использовать 64-битные указатели адреса?
В любом случае все адреса уже лет 30 как виртуальные, и не соотвествуют физическим.
За эти годы намазали столько абстракций что пришлось пилить TLB для ускорения вычисления реальных адресов.
Можно уменьшить все массивы с указателями, все таблицы виртуальных функций, более плотно забивать кеши.
При том я предлагал сиё еще до всяких meltdownов. Если каждый процесс заточён в матрице 4гиг своей виртуальной памяти, как он в принципе может смотреть в память чужого процесса?
Любое переполнение 32-битного адреса простоприведёт к враппингу и не приведёт к плачевным итогам. Но нет, нужно выдумывать запредельно сложные костыли и прочую ASLR-питушню.
В моей практике даже на серверах процессы занимающие более 4х гиг были довольно редки. И обычно мы с таким боролись.
Поскольку на таких больших кучах, становились болезненными существенные задержки от stop-the-world.
subaru 12.01.2018 08:54 # 0
П.С.: 32-разрядные оси тоже уязвимы, на сколько я понимаю.
3.14159265 12.01.2018 15:15 # 0
Хм, даже Дональд Кнут соглсен с моей точкой зрения.
A Flame About 64-bit Pointers
It is absolutely idiotic to have 64-bit pointers when I compile a program that uses less than 4 gigabytes of RAM. When such pointer values appear inside a struct, they not only waste half the memory, they effectively throw away half of the cache.
The gcc manpage advertises an option "-mlong32" that sounds like what I want. Namely, I think it would compile code for my x86-64 architecture, taking advantage of the extra registers etc., but it would also know that my program is going to live inside a 32-bit virtual address space.
Unfortunately, the -mlong32 option was introduced only for MIPS computers, years ago. Nobody has yet adopted such conventions for today's most popular architecture. Probably that happens because programs compiled with this convention will need to be loaded with a special version of libc.
WGH 14.01.2018 22:31 # 0
COWuTEJIbTBOEuMAMKu 14.01.2018 22:42 # −1
3.14159265 15.01.2018 15:45 # 0
Да знаю, но оно ж ABI, там надо всё пересобирать/перелинковывать.
И еще там есть неприятный нюанс: ассемблерные вставки могут сломаться и ломаются.
А без них...
Короче потому и не взлетел, что надо софт портировать и вдовесок к lib и lib64 тащить libx32
COWuTEJIbTBOEuMAMKu 15.01.2018 16:08 # −75
inho 12.01.2018 10:01 # 0
3.14159265 12.01.2018 15:05 # 0
Вот как например реализованы те же transparent huge pages? Мы не посылаем нахуй тех кому нужны страницы по 2 и 4 Мб, но при этом поддерживаем странички по 4Kb.
Steve_Brown 12.01.2018 10:55 # 0
А вот обратное... скажем, мне понадобилась 64-битная программа (да тот же бинарь Qt под Linux) - так пришлось систему переставлять. Может, пусть луше будет 64-битное единообразие?
roman-kashitsyn 12.01.2018 12:32 # +1
COWuTEJIbTBOEuMAMKu 12.01.2018 13:19 # −2
3.14159265 12.01.2018 15:06 # 0
Это повод для гордости?
roman-kashitsyn 12.01.2018 15:07 # +2
Это факт. Маппинг файлов в виртуальную память — очень полезная техника, у которой практически нет алтернатив. Алсо,
3.14159265 12.01.2018 15:09 # 0
Я говорю что большинству программ до сих пор хватает 32-разрядных адресов. Зачем нужны 64 указатели - большой вопрос.
>yandex/mms
Да это всё узкая серверная питушня и ЯНДЕКСОПРОБЛЕМЫ, думаю найдётся тот кто скажет что ему мало и петабайта виртуальной памяти:
> x86-64 is currently limited to 256 TiB
syoma 11.01.2018 15:30 # 0
COWuTEJIbTBOEuMAMKu 11.01.2018 16:33 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:06 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:07 # −1
syoma 11.01.2018 19:12 # 0
COWuTEJIbTBOEuMAMKu 11.01.2018 19:31 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:31 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:34 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:35 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:35 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:35 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:35 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:35 # −1
COWuTEJIbTBOEuMAMKu 11.01.2018 19:36 # −1
3.14159265 11.01.2018 21:21 # +4
Такое ощущая хачий обратно, выдетъ странице етой индекс
ёe сжимаем этим "Ctrl"
COWuTEJIbTBOEuMAMKu 12.01.2018 03:10 # −1
Steve_Brown 12.01.2018 10:10 # 0
syoma 12.01.2018 16:20 # 0
Stallman 12.01.2018 16:27 # 0
Stallman 12.01.2018 16:29 # 0
Stallman 12.01.2018 16:30 # −1
Stallman 12.01.2018 16:30 # −1
Stallman 12.01.2018 16:30 # −1
Stallman 12.01.2018 16:30 # −1
Stallman 12.01.2018 16:30 # −1
Stallman 12.01.2018 16:30 # −1
Stallman 12.01.2018 16:30 # −1
Stallman 12.01.2018 16:32 # 0
Stallman 12.01.2018 16:32 # −1
COWuTEJIbTBOEuMAMKu 12.01.2018 17:16 # −1