{"id":35,"date":"2006-04-10T09:46:10","date_gmt":"2006-04-10T08:46:10","guid":{"rendered":"http:\/\/my.stargazer.at\/?p=35"},"modified":"2007-06-19T15:44:22","modified_gmt":"2007-06-19T13:44:22","slug":"graphikspeicher-als-storage-verwenden","status":"publish","type":"post","link":"https:\/\/my.stargazer.at\/de\/2006\/04\/10\/graphikspeicher-als-storage-verwenden\/","title":{"rendered":"Graphikspeicher als Storage verwenden"},"content":{"rendered":"<p>Das klassische Problem eines Servers l\u00e4sst sich so beschreiben: Man arbeitet nur auf der Konsole und der in Massen vorhandene Graphikspeicher liegt ungen\u00fctzt in der Systemwelt herum. Diesen ungen\u00fctzten Speicher m\u00f6chte ich gerne ben\u00fctzen&#8230;<\/p>\n<p>Da ich mit Linux arbeite ist ein &#8218;geht nicht&#8216; schon mal keine akzeptable L\u00f6sung und ich beginne damit eine Teststellung auf einem meiner Rechner zu errichten.<\/p>\n<p>Die Voraussetzungen sind simpel:<br \/>\nIch compile die MTD Kernelmodule nachtr\u00e4glich. Sie befinden sich unter <em>&#8222;Device Drivers&#8220;->&#8220;Memory Technology Devices&#8220; and &#8222;Device Drivers&#8220;->&#8220;Memory Technology Devices&#8220;->&#8220;Caching Block Device access to MTD devices&#8220;<\/em> und <em>&#8222;Device Drivers&#8220;->&#8220;Memory Technology Devices&#8220;->&#8220;Self-contained MTD Device Drivers&#8220;->&#8220;Physical System RAM&#8220;<\/em> &#8211; mit ihrer Hilfe ist es m\u00f6glich, in einem beliebigen Speicherbereich ein Block-Device einzurichten<!--more--> &#8211; und das ist genau das was wir vorhaben.<\/p>\n<p>Um den Speicherbereich der Graphikkarte zu finden sehe ich in <em>\/proc\/pci<\/em> nach, wo sich ein entsprechender Eintrag befinden sollte:<\/p>\n<blockquote><p><code>Bus  1, device   0, function  0:<br \/>\n    VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 440SE AGP 8x] (rev 162).<br \/>\n      IRQ 11.<br \/>\n      Master Capable.  Latency=64.  Min Gnt=5.Max Lat=1.<br \/>\n      Non-prefetchable 32 bit memory at 0xe8000000 [0xe8ffffff].<br \/>\n      Prefetchable 32 bit memory at 0xe4000000 [0xe7ffffff].<\/code><\/p><\/blockquote>\n<p>Wie der Eintrag zeigt hat meine GeForce4 zwei Speicherbereiche, wobei einer &#8218;Prefetchable&#8216; ist, sich also besser ansprechen l\u00e4sst. Die Basisadresse die ich verwenden muss ist somit <b>0xe4000000<\/b>.<\/p>\n<p>Da auf der Maschine kein X-Server l\u00e4uft ist es nicht n\u00f6tig mehr als 1 MB Speicher f\u00fcr Graphikoperationen zu reservieren:<\/p>\n<blockquote><p><code>0xe4000000+0x00100000 (1MB) = 0xe4100000 <\/code><\/p><\/blockquote>\n<p>Bei Verwendung eines X-Servers mit einer Speicherbegrenzung von 4 MB w\u00fcrde die Situation wie folgt aussehen, wobei wir dessen Speicher auf 4 MB begrenzen m\u00fcssen, was mit dem Eintrag <em>VideoRam 4096<\/em> in der entsprechenden Config geschieht.<\/p>\n<blockquote><p><code>0xe4000000+0x00400000 (4MB) = 0xe4400000<\/code><\/p><\/blockquote>\n<p>Nun laden wir das Kernelmodul mit den entsprechenden Parametern:<\/p>\n<blockquote><p><code>modprobe phram phram=<name>,<start>,<length><\/length><\/start><\/name><\/code><\/p><\/blockquote>\n<p>&#8230; in unserem Fall:<\/p>\n<blockquote><p><code>modprobe phram phram=vram,0xe4100000,63M<\/code><\/p><\/blockquote>\n<p>Im Erfolgsfall sollte sich \/proc\/mtd wie folgt pr\u00e4sentieren:<\/p>\n<blockquote><p><code>graveyard # cat \/proc\/mtd<br \/>\ndev:    size   erasesize  name<br \/>\nmtd0: 03e00000 00001000 \"vram\"<br \/>\n<\/code><\/p><\/blockquote>\n<p>Wenn dies geklappt hat, kommt das mtdblock-Modul zum Einsatz, welches wir mit <em>modprobe mtdblock nachladen. Es erzeugt uns <\/em><em>\/dev\/mtdblock0<\/em> welches wir von nun an wie ein normales Blockdevice verwenden k\u00f6nnen.<\/p>\n<p>Ich habe mich daf\u00fcr entschieden es als zus\u00e4tzlichen Swap-Space einzurichten was ich mit <em>mkswap \/dev\/mtdblock0<\/em> und entsprechendem <em>swapon \/dev\/mtdblock0<\/em> erledige<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das klassische Problem eines Servers l\u00e4sst sich so beschreiben: Man arbeitet nur auf der Konsole und der in Massen vorhandene Graphikspeicher liegt ungen\u00fctzt in der Systemwelt herum. Diesen ungen\u00fctzten Speicher m\u00f6chte ich gerne ben\u00fctzen&#8230; Da ich mit Linux arbeite ist ein &#8218;geht nicht&#8216; schon mal keine akzeptable L\u00f6sung und ich beginne damit eine Teststellung auf einem meiner Rechner [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[206,114],"class_list":["post-35","post","type-post","status-publish","format-standard","hentry","category-it-related-stuff","tag-abuse","tag-memory"],"_links":{"self":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/comments?post=35"}],"version-history":[{"count":0,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/35\/revisions"}],"wp:attachment":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media?parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/categories?post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/tags?post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}