"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Projekt: Gentoo "Flash" Linux

t3mp 14.02.2007 - 20:17 1847 9
Posts

t3mp

I Love Gasoline
Avatar
Registered: Mar 2003
Location: upstairs
Posts: 6254
Idee: Wozu sich über prefetching (oder in Windows-Sprache: Superfetch) Gedanken machen wenn es schnelle, große CF-Cards gibt? Liegen wichtige Teile des OS bereits von Anfang an auf dem Flash-Speicher, sollte ja theoretisch ein ordentlicher Performanceschub zu spüren sein. Oder auch: "i derschlog des mit der Hardware" :)

Zutaten:
SATA --> CF Interface
SanDisk CF Extreme IV 4096MB

Das Addonics-Interface lässt die CF-Karte dem Mainboard als ganz normale SATA-Platte erscheinen, man könnte also selbst Windows davon booten. Natürlich entfällt dabei aber die Flexibilität mit den Partitionen und man ist eingeschränkt auf die in Windows eingebaute Funktion. Die SanDisk bietet 40 MB/s in Schreib- u. Lesevorgängen.

Umsetzung:
Am besten wird imo sein, root (gemeinsam mit /boot, /emul, /etc, /lib, /sbin - alles was kleine Konfigurationsdateien, libs und binaries beinhaltet, wertvolle Zugriffszeit auf der Platte kostet) auf eine 4096 MB ext3-Partition der CF-Karte zu kopieren. Auslagerungsdateien blieben der SanDisk fern (zumindest also einmal /tmp, /var und /opt würden von der Platte eingehängt), es geht nicht darum irgendeine Compilierung zu beschleunigen.

/usr ist in Gentoo allerdings ein schwerer Brocken - gerade hier liegt imo aber viel Performancepotential -, und dafür müsste ich irgendeine Lösung finden. Sources zum Beispiel hätten imo nichts auf der SanDisk verloren, genausowenig wie /usr/portage.

Was haltet ihr davon? Dumme Idee, bringt's doch weniger als ich glaub, oder sinnvoll? Bzw. gäb's elegante Lösungsansätze für /usr?

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11902
Wäre zumindest ein interessantes Proof-of-Concept ;)

Ich hatte schon kleinere /-Partitionen als 4GB - wenn man /home und u. /usr/portage (wobei grade der Portage Tree auf Flash sehr interessant waere - aber auch das ist machbar) von Magnetspeicher reinmountet, waere die Performance interessant.

Spuerbar "Sinn" macht es ziemlich sicher nicht, aber das hat persoenlich bisher selten an Projektumsetzungen gehindert :D

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11326
Zitat von t3mp
gäb's elegante Lösungsansätze für /usr?

Ich hatte lange Zeit ein /var/portage (bis mir aufgefallen ist, dass ich die /var Partition mit zu wenigen inodes formatiert hatte...), und die Sources sind ein Symlink irgendwohin auf /home.

t3mp

I Love Gasoline
Avatar
Registered: Mar 2003
Location: upstairs
Posts: 6254
Zitat von COLOSSUS
Spuerbar "Sinn" macht es ziemlich sicher nicht, aber das hat persoenlich bisher selten an Projektumsetzungen gehindert :D
Also, jucken tät's mich schon. ;)

Erst einmal muss ich schauen, woher ich überhaupt das CF-SATA Interface herbekommen könnte, meine Suche hat bisher außerhalb von US und UK nichts ergeben. D.h. das ist erst einmal Zukunftsmusik.

Ich hab zurzeit eine nachträglich aufgegliederte Gentoo-Installation, d.h. /boot, /opt, /home und /var sind bereits ausgegliedert u. letzten beiden auf einer anderen Platte, die halbe Arbeit hätte ich also prinzipiell schon.

Dachte auch an Symlinks, muss mir nur noch überlegen ob es gescheiter ist, /usr auf der SanDisk zu lassen oder gleich auf eine Platte auszugliedern u. dann per Symlinks auf den Flash zu gehen - wobei, wenn ich es mir jetzt so durchdenk wär das eigentlich ziemlich dumm, bei Symlinks erst recht wieder zuerst auf der Platte zu gehn... gut, also /usr kommt auf die SanDisk und /usr/portage wird Richtung /var umgebogen (passt ja eigentlich), usw.. :)

EDIT: Wär eigentlich auch dumm, /usr/portage nicht auf dem Flash zu lassen, nachdem distfiles 99% des Platzes benötigt, wird auch das umgebogen.
Bearbeitet von t3mp am 14.02.2007, 22:03

Marcellus

OC Addicted
Avatar
Registered: Mar 2005
Location: ~
Posts: 1755
Ich hab mich auch schon mal gedanklicherweise mit sowas bescheftigt, hab das aber noch ein stück weiter gedacht als du, wenn du ein notebook hast wäre es interessant deinen ram dump beim suspend auf die karte zu spielen und mit der netten funktion keep image reichts dir dann statt runterzufahren einfach nur die partitionen ro zu mounten und zack aus ist. Beim booten wird dann jedesmal das image vom flash gelesen und direkt in den ram gespielt. Damit kannst du um etliches schneller booten.

Mal angenommen du hast einen stand pc und diese sata flash karten sind schwer zu bekommen steck dein geld wenn schon dann in ram, ram ist schön, du kannst sowohl schneller lesen als auch schreiben und ich bin mir fast sicher, dass die latency auch niedriger ist :)

Das gesamte system auf den ram auslagern ist imho nicht sehr zweckmäsig, aber wenn du alle binaries rauslegst ist das sicher nicht schlecht, weils dann fürs programm nicht mehr so weit ist in den ram geladen zu werden *gg*, ich bin mir nur nicht sicher, ob der PATH von rechts nach links, oder von links nach rechts gelesen wird, falls deine ramdisk wirklich einmal meier geht, weil dein saft ausfällt wärs vielleicht nicht schlecht noch eine kopie von allen binaries auf der festplatte zu haben, aber dass die ramdisk die erste Anlaufstelle ist.

btw /usr/portage könntest du angenehmer gestalten, wenn du eine reiser fs partition draufmountest, reiser fs ist im Umgang mit kleinen dateien teilwesie 3-4 mal so schnell als ext2/3, hat aber den großen nachteil, dass es bei einem plötzlichen disconnect ohne umount einfach so eingehen kann und daten beschädigt, das kann dir aber eh auch wurscht sein, weil /usr/portage entweder bei einem sync neu gefetcht wird, oder md5sum gecheckt wird.

Falls du wirklich was herumbasteln willst hast du jetzt mit sicherheit ein paar anregungen bekommen, aber ich hab nicht eine dieser sachen ausprobiert, weils einfach unnötig ist. Btw die festplatte wird sowieso im ram gecacht, schau dir mal an was dir "free" sagt, wenn du genug ram hast wird dir die flash eh kaum performance bringen. Und imho ist eine normale 7200rpm sata platte schneller als 40mb lesen und schreiben

t3mp

I Love Gasoline
Avatar
Registered: Mar 2003
Location: upstairs
Posts: 6254
Ob ich die SanDisk mit ext3 oder reiserfs bespiele ist ohnehin noch nicht fix, falls reiserfs tatsächlich einen so großen Vorteil bietet wird sie damit formattiert, Benches wären dann interessant - lese bisher immer nur davon dass reiserfs 3-4x so schnell sein soll oder kann. Daten hat mir reiserfs bisher eigentlich nie kaputt gemacht, hab /home und /var damit formattiert.

Erst einmal thx für die Ideen, hab allerdings ein paar Einwände:

Der RAM-Dump besteht afaik aus einem einzigen, großen Image. Genau da ist der Vorteil des Flash-Speichers am geringsten, denn sobald die Festplatte einmal zugegriffen hat liest sie den Dump mindestens genauso schnell aus wie eine SanDisk mit 40 MB/s. Ein Notebook mit 4200rpm-Platte und durchschnittlichen 20 MB/s würde davon natürlich schon noch profitieren, aber das ist eigentlich nicht ganz der vorrangige Sinn der Sache.

RAM ist schön, aber auch sehr vergänglich in diesen Zeiten. Von meinen 2GB DDR1 RAM (die ich nicht mehr gedenke zu erweitern) wird bereits ca. die Hälfte als Buffer u. Cache benutzt sodass kaum etwas "frei" ist, allerdings handelt es sich dabei afaik nicht um eine vorhersehende Prefetch-Strategie, sondern schlicht um Daten, die beim Starten bereits von der Festplatte gelesen wurden - und da hat z.b. der KDE-Moloch einen großen Anteil daran. Dass eine 7200rpm Platte eine höhere Transferrate hat ist völlig klar, darum geht es hier nicht - deren großer Nachteil ist die Zugriffszeit. Im Vergleich dazu liegt die bei einem Flash-Speicher bei annähernd null. Wenns also darum geht, viele kleine, oft weit verstreute Dateien auszulesen schlägt der Flash-Speicher die Platte um Längen. Nicht umsonst profitiert man bei Vista sogar dann, wenn man einen USB-Stick als Auslagerungsspeicher verwendet.

PS: Es geht hier um einen Standrechner, ein Notebook hab ich zwar auch, aber das wird 2008 hoffentlich durch ein 13,3"er mit SSD, 690G und LED-LCD ersetzt. :)

Marcellus

OC Addicted
Avatar
Registered: Mar 2005
Location: ~
Posts: 1755
Btw usbstick als auslagerungsdatei ist eine sehr dumme idee, da du da über usb gehen musst und das ist doch recht cpu aufwändig, mal abgesehen davon würde das ganze os auf einmal abkacken, wenn du den stick auf einmal absteckst.

Ich hab das mit dem ram vielleicht nicht so rübergebracht, wie ich das wollte, du kannst eine ramdisk anlegen, wie man die ramidsk anlegt findest du im internet zu hauf. Und du kannst mir wirklich nicht sagen, dass der flash schneller ist als ram.

t3mp

I Love Gasoline
Avatar
Registered: Mar 2003
Location: upstairs
Posts: 6254
Ich hab keine Ahnung wie Vista das plötzliche Abstecken des Auslagerungssticks handled, allerdings geht's hier nur um Auslagerung, ich glaube (oder hoffe für MS ^^) nicht dass das ganze System da mitgerissen wird. Ansonsten halt ichs aber auch für eine ungenügende Lösung, wollte es nur als Beispiel anführen dass hier selbst mit weit langsamerem Speicher noch Vorteile gegen die Festplatte zu erzielen sind.

Eine Ramdisk geht mir eben einfach nicht weit genug; klar, ich könnte beim Start immer einen Haufen Binaries auslagern, und das wäre dann verflixt schnell. Es geht mir aber um mehr; v.a. Daten, die man nicht unbedingt so gern auf einem flüchtigen Speicher hat.

t3mp

I Love Gasoline
Avatar
Registered: Mar 2003
Location: upstairs
Posts: 6254
Hab inzwischen ein Stück weitergedacht - Zeit gab's ja genug, und Lexar hat seine 300x-Serie noch immer nicht auf dem Markt, d.h. die ExtremeIV-Preise sind bisher ziemlich stabil.
Je nach Preislage wäre dann eigentlich auch ein SW-Raid mittels LVM und zwei Stück ExtremeIII denkbar. Betreff SATA-CF hab ich inzwischen einen ungarischen Händler entdeckt, mal schauen ob die deutsch oder englisch verstehen. :D

In jedem Fall kommt auf das/die CF(s) LVM, mit reiserfs formattiert.

Wie splitte ich / auf?
1.) billige Methode:
a) Auf /dev/md0 landen:
/bin, /emul, /etc/, /lib, /lib32 /lib64, /root, /sbin
b) Anschließend werden die entsprechenden /usr-Directories umgebogen:
/usr/bin -> /bin
/usr/lib -> /lib (lib32 und lib64 entsprechend genauso)
/usr/sbin -> /sbin

Damit lägen dann nach aktuellem Stand knappe 2300 MB ausgelagert auf /dev/md0.

2.) imo besser, aber auch risikoreicher:
a) Auf /dev/md0 landen:
/bin, /emul, /etc/, /lib, /lib32 /lib64, /root, /sbin, /usr
b) Von /usr werden jetzt allzu schwere Directories und solche, die auf CF schlicht nichts bringen, ausgelagert auf eine /dev/sda-Partition namens /usrhd:
/usr/portage/distfiles -> /var/distfiles
/usr/share -> /usrhd/share
/usr/src -> /usrhd/src

Nach aktuellem Stand könnte dadurch sogar KDE-3.5 von /dev/md0 geladen werden, Portage wäre ebenfalls drauf, das ginge sich dann ganz gut aus (nach aktuellen Berechnungen wären das ca. 3.4 GB auf CF).

Anregungen, Beanstandungen?
Bearbeitet von t3mp am 01.05.2007, 18:01

Marcellus

OC Addicted
Avatar
Registered: Mar 2005
Location: ~
Posts: 1755
Hmm, wenn du gentoo verwendest wärs auch nicht schlecht /tmp auf die flash zu legen, weil dann das compilieren um einiges schneller gehen sollte. Ich bin mir aber sicher, dass die variante mit dem ram billiger und im endeffekt schnelelr sein sollte.

Übringes die buffer, die du am ram hast sind ohnehin binaries, die du bereits ausgeführt hast und vllt ein paar daten dazu.

Ram kann man eben nie genug haben :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz