вында7 ругается на недостаток памяти

reallyjust

часто. требует выгрузить фаерфокс
монитор ресурсов выглядит так, это нормальная картина?

установленная память 4Гб, 2.92 Гб доступно (кстати почему не вся доступна?)

BondarAndrey

Коротко — потому что 32 бит. А длинно, потому что ряд адресов виртуальной памяти для 32 бит (которая при объеме физической в 4 Гб мэппится на физическую 1:1) оказывается зарезервированным под адреса ввода-вывода устройств.

Marinavo_0507

своп-файл нужно завести наверное

reallyjust

нда, поставил для пробы 200 мб, наблюдаю

Marinavo_0507

нормальный надо поставить думаю, а не маленький

Troyn09

4Гб для семерки мало, надо 8

nemec2707

4Гб для семерки мало, надо 8
неверное утверждение

hoha32

сильно зависит от профиля использования
мне хватает 4 гига

Troyn09

для комфортной работы надо больше 4Гб
оно конечно и на 1Гб будет работать, но это нельзя назвать комфортной работой без тормозов

reallyjust

не понял, тут же пишут, что 32битная и 4гб неадекватно уваривает

hoha32

больше гигабайта в никуда ушло - или на встроенную видеокарту?

nemec2707

для комфортной работы надо больше 4Гбоно конечно и на 1Гб будет работать, но это нельзя назвать комфортной работой без тормозов
Капитан спешит на помощь и докладывает, что у разных людей абсолютно разные задачи крутятся на домашнем компе, поэтому оценивать потребности в памяти для всех сразу - заведомо неверно.
У меня на ноуте 2 гига, на десктопе - 8 гб, разницы не чувствую

hoha32

ну, я на ноуте различаю 2 и 4 гига - на 4 гигах можно своп нафиг вырубить

nemec2707

ну это да :)

Troyn09

так поставь 64битную и докупи памяти

Troyn09

У меня на ноуте 2 гига, на десктопе - 8 гб, разницы не чувствую
у меня на ноуте 1, на домашнем 4 и на рабочем 8, разница чувствуется между всеми

hoha32

у меня на ноуте 1
выкинь это
не, правда выкинь

juliuzz

больше гигабайта в никуда ушло - или на встроенную видеокарту?
у меня встроенная хавает очень немного

hoha32

у меня встроенная хавает очень немного
по идее да, динамическое выделение должно быть, но мало ли чего её переклинило

BondarAndrey

по идее да, динамическое выделение должно быть, но мало ли чего её переклинило
Динамическое выделение тут ни при чем, системные адреса "хаваются" и дискретными картами с собственной набортной памятью. Тут все определяется величиной GART

hoha32

интересно мне насколько это верно в настоящее время
потому как то, для чего задумывался изначально GART, похоже, в последнее время (не менее 5 лет по моим наблюдениям длящееся) нафиг не нужно видеокартам с их объёмами памяти
например, у меня щас на долю "зарезервировано оборудованием" пишет 2 мегабайта, что больше похоже на "bios shadow"
то же, что жрут встроенные видеокарты, определяется никак не GART.

BondarAndrey

потому как то, для чего задумывался изначально GART, похоже, в последнее время (не менее 5 лет по моим наблюдениям длящееся) нафиг не нужно видеокартам с их объёмами памяти
Как "ненужно"? А как ты видеопямять в системную отображать будешь? Нужно "окно" адресов, причем, чем более крупное, тем меньше операций копирования нужно делать.
AFAIK, современные биосы умеют как-то маппировать эти адреса используя виртуальное адресное пространство >32bit даже для 32-битных систем, но не все и не для всех устройств. Вот, можно почитать, в частности про memory remapping: http://en.wikipedia.org/wiki/3_GB_barrier

BondarAndrey

например, у меня щас на долю "зарезервировано оборудованием" пишет 2 мегабайта, что больше похоже на "bios shadow"
то же, что жрут встроенные видеокарты, определяется никак не GART.
серверную винду на десктопе юзаешь? :grin:

hoha32

Ещё раз. Для чего нужен GART:
The GART allows the graphics card direct memory access to the host system memory

То есть как альтернативный собственной видеопамяти способ хранения текстур в системной. Поэтому вопрос:
А как ты видеопямять в системную отображать будешь?

у меня вызывает некоторое недоумение вида "нафига козе баян?" По-моему адресацией видеопамяти должен заниматься видеопроцессор, мб за исключением окончательного кадрового буфера (то есть то что видно на экране и то не факт. Потому что бОльшая часть этой памяти используется отнюдь не как кадровый буфер, но как оперативка для GPU.

hoha32

серверную винду на десктопе юзаешь?
чиво?
7-64 у меня
меня удивило что у топикстартера "зохавано на нужды системы" более 1 гига, обычно на 32-битной системе что-то порядка 700 мегов на нужды всяких шин уходит.

BondarAndrey

То есть как альтернативный собственной видеопамяти способ хранения текстур в системной.
Ты неверно понимаешь написанное. Кури memory-mapped io

hoha32

Ещё как верно. Также я помню _когда_ появилась эта хрень и для чего. И точно так же я вижу что эта хрень осталась только на страницах педовикии да в недрах документации xorg. Видимо, очень важная хрень.

BondarAndrey

ОК, не могу спорить со специалистом.

Troyn09

серверную винду на десктопе юзаешь? :grin:
у меня вообще 1MB на две видяшки суммарно несущих 3,5Гб памяти :)

Marinavo_0507

у меня вызывает некоторое недоумение вида "нафига козе баян?" По-моему адресацией видеопамяти должен заниматься видеопроцессор, мб за исключением окончательного кадрового буфера (то есть то что видно на экране и то не факт. Потому что бОльшая часть этой памяти используется отнюдь не как кадровый буфер, но как оперативка для GPU.
А как тогда обмениваться данными между CPU и GPU, если данных много? Копировать через окошко?

hoha32

Там поток чаще всего однонаправленный, текстуры надо сливать из CPU RAM в GPU RAM, обратный же поток мал. Ну и таки да, их придётся залить. Непосредственно в оперативной памяти CPU с ними хреново работать - но можно было бы с помощью GART если бы кто-то в здравом уме этим способом пользовался бы.

Marinavo_0507

Там поток чаще всего однонаправленный, текстуры надо сливать из CPU RAM в GPU RAM, обратный же поток мал. Ну и таки да, их придётся залить.
Сейчас же ещё в моде расчёты на GPU, там уже не текстуры.
Ну короче насколько я знаю, видеопамять обычно отображается в адресное пространство CPU - винда этого не показывает, поскольку системная память на это не тратится.

hoha32

Сейчас же ещё в моде расчёты на GPU
Мой видеопроц такого не умеет.
Ну короче насколько я знаю, видеопамять обычно отображается в адресное пространство CPU

Ссылочку можно? А то в меня пока что ткнули эпитафией на GART и какими-то общими словами. Насколько меня просветил беглый гуглинг, у CPU нету прямого доступа к видеопамяти. В отличие от GPU, которому дозволен DMA для копирования чего-нить оттуда. Ну, если суметь им воспользоваться.

hoha32

Хотя, учитывая это (если это не прикол конечно какой-то похоже что действительно отображается. Интересно мне как это выглядит под управлением 32-битной ОС с системной памятью в 4 гига и с видеокартой о 4х гигах. Если это конечно не из серии "некуда отображать - ну и хер с ним".

Marinavo_0507

ну наверное вся видеопамять не будет доступна без PAE

Marinavo_0507

GART
ну типа IOMMU называется
GART - это вроде частный случай
в линуксе /proc/iomem показывает чья память где, у меня нет видеокарт с кучей памяти, чтоб посмотреть, что бывает в таких случаях

Marinavo_0507

а не
iommu это для другого, как gart

Troyn09

Сейчас же ещё в моде расчёты на GPU
там обмен данными редок

hoha32

ну наверное вся видеопамять не будет доступна без PAE
ну уж GPU-то её должен видеть

hoha32

насколько я понимаю, забота о GART лежит полностью на операционке, поэтому в "серой" области оно учитываться не должно

Marinavo_0507

для GART резервируется адресное пространство (апертура а физическая память выделяется динамически и отображается туда
видеопамять отображается отдельно
что бывает в случае видеопамяти больше гигабайта на 32-битных системах, мне найти не удалось

BondarAndrey

для GART резервируется адресное пространство (апертура а физическая память выделяется динамически и отображается туда
Вот именно. Размер апертуры это и есть "потерянная" память. Просто для 64-бит системы она находится где-то в далеких эксабайтах, докуда физической расти и расти, а в 32-битном адресном пространстве в силу 1:1 отображения физических адресов на виртуальные (при объеме оперативы 4Гб) она реально делает недоступным часть памяти, если только не делать всякие bounce buffers, что вообще-то чревато накладными расходами на копирование данных туда-сюда. Костыль PAE в комбинации с костылями в BIOS как-то позволяет это обходить, но для "настольных" операционок от МС этот костыль отломали, так что пользователям остается либо жрать кактус, либо использовать нормальную 64-бит операционку.

hoha32

для GART резервируется адресное пространство (апертура)
выделение апертуры вроде как сдохло вместе с AGP (по крайней мере даже в настройках кажись такого не осталось теперь GART нужна лишь для обеспечения DMA, если ничего не путаю, и осуществляется силами операционки/драйверов.

Marinavo_0507

Не, размер апертуры в биосе выставляется, и не больше 256 обычно же

Marinavo_0507

Я думаю, там просто решили, что это незачем настраивать, так как этот способ сейчас не основной, и вообще с виртуализацией не дружит

hoha32

Гуглинг меня всё же убеждает в том что апертура для pcie не предусмотрена.

BondarAndrey

теперь GART нужна лишь для обеспечения DMA
погоди-погоди, а для DMA область системной памяти (буфер значит не нужна уже? И что-то мне подсказывает, что резервирование этого буфера делается явно на этапе загрузки, иначе что бы это тогда было?

BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
BIOS-e820: 0000000000100000 - 000000007f7d1800 (usable)
BIOS-e820: 000000007f7d1800 - 0000000080000000 (reserved)
BIOS-e820: 00000000e0000000 - 00000000f0007000 (reserved)
BIOS-e820: 00000000f0008000 - 00000000f000c000 (reserved)
BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
BIOS-e820: 00000000fed20000 - 00000000fee10000 (reserved)
BIOS-e820: 00000000ffb00000 - 0000000100000000 (reserved)

Marinavo_0507

биос резервирует адресное пространство, как ему кажется правильным, драйвера потом могут переделать это

hoha32

Ещё погуглил. Оказывается, щас GART встроен в видеочип. То есть из системного биоса эта хрень естественным образом не видна. А как она будет работать на видеокарте - зависит от драйвера видеокарты. Так как эта хрень работает не автоматически, иногда это у неё получается плохо.

BondarAndrey

биос резервирует адресное пространство, как ему кажется правильным, драйвера потом могут переделать это
ОК, но разве для DMA-обмена с устройством не требуется зарезервированная (биосом или драйвером) область памяти, ну, точнее, кусок адресов? Как я понимаю, для обмена с видеопамятью нужно иметь достаточно большой буфер, чтобы копировать как можно большими блоками.

hoha32

ну... 64 мегабайта - большой буфер?

Marinavo_0507

ОК, но разве для DMA-обмена с устройством не требуется зарезервированная (биосом или драйвером) область памяти?
Не памяти, а адресного пространства.
И пишут, что резервировать необязательно, можно динамически выделять. Типа в DX10 для каждого процесса выделяется отдельно например.

Marinavo_0507

ну понятно вроде, что прямой доступ процессора к видеопамяти будет быстрее - нет лишнего копирования

BondarAndrey

64 мегабайта
Для видеокарт карт с гигом набортной? Оооой, слабо что-то верится мне. Больше похоже на буфер dma для какого-нибудь sata. Даже для сраной AGP апертура была 128-256 Мб.
Кстати, господа с виндой: откройте девайс-менеджер, выберите видеоадаптер и в свойствах посмотрите, какой диапазон адресов зарезервирован для него?

hoha32

нет лишнего копирования

тем не менее, это оказывается не обязательная практика обращения с текстурами

hoha32

Даже для сраной AGP апертура была 128-256 Мб.

Потому что выполняла совершенно другие функции. Странно иметь для видеокарты с памятью в 16 мегов кэш такого объёма, не находишь?

hoha32

Для видеокарт карт с гигом набортной?
Да они с жёсткого диска с такой скоростью грузиться не успеют с какой ты их в видеопамять писать хочешь. Скорость PCI-E 16x представляешь себе? Так она чаще всего и избыточна.

margadon

может я их процедурно CPU генерю, а не с диска читаю

hoha32

может я их процедурно CPU генерю, а не с диска читаю
вспоминая о видеороликах на 64 килобайта, ждал такого комментария
должен заметить, весьма "распространённое" явление, ага
в любом случае, даже если ты их генеришь, ты не обновляешь их в видеопамяти настолько часто, чтоб не хватало пропускной способности шины, а если обновляешь, то, простите, что пользователь видит?

margadon

в общем, для всяких там gpu-вычислений я думаю быстрый и ёмкий канал cpu-gpu весьма важен, хотя тут пусть специалисты по gpu высказываются, но заведомо ясно, что архитектурно закладываться на то, что поток cpu-gpu мал, довольно недальновидно

hoha32

в общем, для всяких там gpu-вычислений я думаю быстрый и ёмкий канал cpu-gpu весьма важен

всегда лучше больше, чем меньше, для этого уже аж до PCIe 3.0 добрались
архитектурно закладываться на то, что поток cpu-gpu мал, довольно недальновидно

"не настолько велик" != "мал", я никогда не говорил что он мал
тут вопрос в том зачем такой шине как PCI-E большой буфер (применительно к видеокарте конечно если вспомнить с чего всё началось - скорость высокая, задержки низкие, проблем с произвольностью нет... так нафига буфер? тем более что GART не о буферизации вообще, но о непрерывности

elenangel

через 32-битный io-порт :)

Troyn09

в общем, для всяких там gpu-вычислений я думаю быстрый и ёмкий канал cpu-gpu весьма важен
зачем он нужен, если задание считается на GPU, а новое задание и соответственно обмен с CPU происходит не часто

elenangel

в линуксе /proc/iomem показывает чья память где, у меня нет видеокарт с кучей памяти, чтоб посмотреть, что бывает в таких случаях
10GiB физической памяти, видюха GeForce 9600GT c 512 MB, ядро с pae
 
 ~ $ cat /proc/iomem
00000000-0000ffff : reserved
00010000-0009fbff : System RAM
0009fc00-0009ffff : reserved
000a0000-000bffff : PCI Bus 0000:00
000a0000-000bffff : Video RAM area
000c0000-000cddff : Video ROM
000d0000-000dffff : PCI Bus 0000:00
000e4000-000fffff : reserved
000f0000-000fffff : System ROM
00100000-cff7ffff : System RAM
00100000-005fa659 : Kernel code
005fa65a-0085b907 : Kernel data
00913000-009ff6db : Kernel bss
02000000-09ffffff : Crash kernel
cff80000-cff8dfff : ACPI Tables
cff8e000-cffcffff : ACPI Non-volatile Storage
cffd0000-cfffffff : reserved
d0000000-ffffffff : PCI Bus 0000:00
d0000000-dfffffff : PCI Bus 0000:01
d0000000-dfffffff : 0000:01:00.0
e0000000-efffffff : PCI MMCONFIG 0000 [bus 00-ff]
e0000000-efffffff : pnp 00:0d
f0000000-f03fffff : PCI Bus 0000:03
f8e00000-f8efffff : PCI Bus 0000:02
f8ee0000-f8eeffff : 0000:02:00.0
f8ee0000-f8eeffff : r8169
f8eff000-f8efffff : 0000:02:00.0
f8eff000-f8efffff : r8169
f8f00000-f8ffffff : PCI Bus 0000:03
f9ff8000-f9ffbfff : 0000:00:1b.0
f9ff8000-f9ffbfff : ICH HD audio
f9fff400-f9fff4ff : 0000:00:1f.3
f9fff800-f9fffbff : 0000:00:1d.7
f9fff800-f9fffbff : ehci_hcd
f9fffc00-f9ffffff : 0000:00:1a.7
f9fffc00-f9ffffff : ehci_hcd
fa000000-fe9fffff : PCI Bus 0000:01
fa000000-fbffffff : 0000:01:00.0
fb000000-fb12ffff : vesafb
fd000000-fdffffff : 0000:01:00.0
fd000000-fdffffff : nvidia
fe980000-fe9fffff : 0000:01:00.0
fea00000-feafffff : PCI Bus 0000:02
feaf0000-feafffff : 0000:02:00.0
feb00000-febfffff : PCI Bus 0000:04
febd0000-febdffff : 0000:04:02.0
febd0000-febdffff : 0000:04:02.0
febe0000-febeffff : 0000:04:00.0
febffc00-febffcff : 0000:04:00.0
febffc00-febffcff : 8139too
fec00000-fec003ff : IOAPIC 0
fed00000-fed003ff : HPET 0
fed08000-fed08fff : pnp 00:07
fed14000-fed19fff : pnp 00:01
fed1c000-fed1ffff : pnp 00:07
fed20000-fed3ffff : pnp 00:07
fed50000-fed8ffff : pnp 00:07
fee00000-fee00fff : Local APIC
fee00000-fee00fff : reserved
fee00000-fee00fff : pnp 00:0b
ffc00000-ffefffff : pnp 00:0a
fff00000-ffffffff : reserved
100000000-2afffffff : System RAM

Marinavo_0507

у тебя 2 блока по 256МB
один я так думаю для DMA, а другой для отображения видеопамяти - отображается походу только часть
у меня ровно то же самое на встроенном адаптере Intel - я даже не в курсе, есть ли у него своя видеопамять

hoha32

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

Marinavo_0507

а вообще может оказаться что MMCONFIG - это не привязано ни к какому устройству, тогда правда непонятно, зачем целых 256MB

dgaf

в MMCONFIG замаплены pci configuration space-ы всех pci устройств.
например, в 0xe0000000 доступен pci vendor id северного моста.
ds:0xe0000000 8680

kill-still

2.92 Гб доступно (кстати почему не вся доступна?)
вроде до 3.2 можно довести правя реестр.

reallyjust

кстати, упомянутая установка маленького свопа вроде бы решила проблему :)

kill-still

а ты загрузи ещё пару игр, и увидишь ещё раз это сообщение. :)

reallyjust

нигамаю
Оставить комментарий
Имя или ник:
Комментарий: