Konfigurując nowy serwer, doszedłem do wniosku, że pamięc karty graficznej praktycznie będzie nie wykorzystana. A skoro już jest, to dlaczego z niej nie skorzystać? Jedynym sensownym rozwiązaniem było wykorzystanie tej przestrzeni jako szybki ramdysk.
Pierwsze co musimy zrobić to poznać adres szyny PCI w której podpięta jest nasza karta.
# lspci | grep VGA
01:00.0 VGA compatible controller: ATI Technologies Inc RV710 [Radeon HD 4350]
Kolejnym krokiem jest określenie początkowego adresu pamięci oraz jego rozmiaru możliwego do zmapowania przez procesor.
# lspci -vvv -s 01:00.0 | grep prefetchable
Region 0: Memory at d0000000 (64-bit, prefetchable) [size=256M]
Region 2: Memory at fbce0000 (64-bit, non-prefetchable) [size=64K]
W ten sposób znamy początkowy adres 0xd0000000 oraz rozmiar 256MB.
Na prymitywne potrzeby postanowiłem jednak zachować 32MB (0x02000000). Stąd też, naszym adresem początkowym będzie 0xd2000000 - z czego zostaje nam 224MB na nasz ramdysk :
# modprobe phram phram=VRAM,0xd2000000,224Mi
Sprawdzamy.
# cat /proc/mtd
dev: size erasesize name
mtd0: 0e000000 00001000 "VRAM"
Gra kapela. Czas na załadowanie modułów mtdblock, który umożliwi nam wykorzystanie mtd jako urządzenia blokowego oraz modułu jffs2, który najlepiej nada się jako system plików dla tego typu urządzenia.
# modprobe mtdblock
# modprobe jffs2
Pozostało już tylko sformatowanie oraz podmontowanie
# mkfs -T jffs2 /dev/mtdblock0
# mkdir /mnt/vram
# mount /dev/mtdblock0 /mnt/vram
Na koniec sprawdzamy czy wszystko przebiegło OK i możemy cieszyć się szybkim ramdyskiem.
# df --si | grep mtdblock
/dev/mtdblock0 232M 132k 220M 1% /mnt/vram
Jak szybko może być ?
# hdparm -t /dev/mtdblock0
/dev/mtdblock0: Timing buffered disk reads: 224 MB in 0.03 seconds = 6422.75 MB/sec
# hdparm -T /dev/mtdblock0
/dev/mtdblock0: Timing cached reads: 17666 MB in 2.00 seconds = 8842.62 MB/sec
Niestety nie ma róży bez kolców - opisana metoda nie będzie działać jeśli wykorzystujemy zamknięte sterowniki ATi / NVidia. Dlatego decyzję trzeba podjąć indywidualnie.
















