SSD zum Kompilieren
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
SSD zum Kompilieren
Klever gemacht, vielleicht sollte man erst nachfragen, dann handeln, aber ich wollte es mal ausprobieren.
Den aktuellen Flaschenhals beim Kompilieren in meiner Konfiguration sehe ich in meiner Festplatte. 2010 Jahr habe ich auf einen i7 aufgerüstet, welcher den Kompiliervorgang von damals 50 Sekunden auf flauschige 8 Sekunden drückte.
Allerdings habe ich damals auch noch mehrere Repositorys für unterschiedliche Programme. Diese habe ich inzwischen zusammengeführt und natürlich weiterentwickelt. Nun lande ich wieder bei um die 30 Sekunden für ein Rebuild. Das ist mir zu lang, aber die auch die Makeskripte sind schon optimiert worden.
Da 8 Buildvorgänge gleichzeitig an der Festplatte ziehen, hoffe ich nun mit einer SSD was reißen zu können. Hat da jemand schon Erfahrungen mit gesammelt?
Den aktuellen Flaschenhals beim Kompilieren in meiner Konfiguration sehe ich in meiner Festplatte. 2010 Jahr habe ich auf einen i7 aufgerüstet, welcher den Kompiliervorgang von damals 50 Sekunden auf flauschige 8 Sekunden drückte.
Allerdings habe ich damals auch noch mehrere Repositorys für unterschiedliche Programme. Diese habe ich inzwischen zusammengeführt und natürlich weiterentwickelt. Nun lande ich wieder bei um die 30 Sekunden für ein Rebuild. Das ist mir zu lang, aber die auch die Makeskripte sind schon optimiert worden.
Da 8 Buildvorgänge gleichzeitig an der Festplatte ziehen, hoffe ich nun mit einer SSD was reißen zu können. Hat da jemand schon Erfahrungen mit gesammelt?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: SSD zum Kompilieren
ForceGT 120GB bestellt, heute bespielt. Die Compilierzeit auf 14 Sekunden verkürzt.
Klevererweise habe ich erst heute festgestellt, dass ich keinen richtigen Sata III-Anschluss habe. Mainboard ist schon zu alt. :-/
Klevererweise habe ich erst heute festgestellt, dass ich keinen richtigen Sata III-Anschluss habe. Mainboard ist schon zu alt. :-/
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: SSD zum Kompilieren
Noch ein paar andere Testwerte.
In meinem Arbeitsrechner ist eine Samsung 753LJ HDD drin (750GB), auf der bisher auch Windows 7 installiert war.
Booten bis zur Kennworteingabe: 23,8s mit HDD, 16,7s mit SDD.
Visual Studio starten: 11s mit HDD, 4s mit SSD
Mein Projekt öffnen: 11,9s mit HDD, 3,1s mit SSD
Opera nach Neustart öffnen: 6,1s mit HDD, 1,5s mit SSD
In meinem Arbeitsrechner ist eine Samsung 753LJ HDD drin (750GB), auf der bisher auch Windows 7 installiert war.
Booten bis zur Kennworteingabe: 23,8s mit HDD, 16,7s mit SDD.
Visual Studio starten: 11s mit HDD, 4s mit SSD
Mein Projekt öffnen: 11,9s mit HDD, 3,1s mit SSD
Opera nach Neustart öffnen: 6,1s mit HDD, 1,5s mit SSD
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- fat-lobyte
- Beiträge: 1398
- Registriert: Sa Jul 05, 2008 12:23 pm
- Wohnort: ::1
- Kontaktdaten:
Re: SSD zum Kompilieren
Interessant. Klingt so, als ob der Bottleneck heutzutage bei der Festplatte liegt. Da fragt ich mich, ob man nicht auch Steinzeit Systeme mit geschicktem caching und etwas Kernel-Zauberei ein wenig beschleunigen könnte.
Haters gonna hate, potatoes gonna potate.
Re: SSD zum Kompilieren
Hallo,
hast Du schon mal über eine Ramdisk nachgedacht?
Da Du Linux verwendest, wäre das vielleicht ein Weg:
tmpfs für die Ramdisk, die RAM dynamisch allokiert
(g)rsync, um die Daten von SSD auf die Ramdisk zu schieben, evtl. auch um wieder auf SSD zurückzuschieben
Meine Ramdisk ist um den Faktor 30/70 schneller beim lesen/schreiben als die SSD.
hast Du schon mal über eine Ramdisk nachgedacht?
Da Du Linux verwendest, wäre das vielleicht ein Weg:
tmpfs für die Ramdisk, die RAM dynamisch allokiert
(g)rsync, um die Daten von SSD auf die Ramdisk zu schieben, evtl. auch um wieder auf SSD zurückzuschieben
Meine Ramdisk ist um den Faktor 30/70 schneller beim lesen/schreiben als die SSD.
Liebe Grüße
turbo
turbo
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: SSD zum Kompilieren
"Turbo"... den Usernamen entsprechend dem Posting gewählt? 
Willkommen im Forum.
Das habe ich so vor 15 Jahren auch automatisiert gemacht. Allerdings hing sich dabei auch gerne mal das ganze System auf.
Dann waren die geänderten Quellen weg.
Linux ist wesentlich stabiler als AmigaOS, dass ich damals noch verwendete. Da könnte man über das Risiko durchaus nachdenken.
Bzw. Lust einen Artikel dazu für's Wiki zu schreiben und den Weg dahin soweit zu erklären?

Willkommen im Forum.
Yupp, als die SSDs noch einiges teurerer waren habe ich darüber auch nachgedacht, aber nicht umgesetzt.turbo hat geschrieben:hast Du schon mal über eine Ramdisk nachgedacht?
Das habe ich so vor 15 Jahren auch automatisiert gemacht. Allerdings hing sich dabei auch gerne mal das ganze System auf.
Dann waren die geänderten Quellen weg.
Das wäre dann allerdings erst beim herunterfahren?turbo hat geschrieben: Allerdings muss ich dafür die Quellcodes in den RAM schieben.
Da Du Linux verwendest, wäre das vielleicht ein Weg:
tmpfs für die Ramdisk, die RAM dynamisch allokiert
(g)rsync, um die Daten von SSD auf die Ramdisk zu schieben, evtl. auch um wieder auf SSD zurückzuschieben
Linux ist wesentlich stabiler als AmigaOS, dass ich damals noch verwendete. Da könnte man über das Risiko durchaus nachdenken.
Hast Du dafür schon Skripte?turbo hat geschrieben:Meine Ramdisk ist um den Faktor 30/70 schneller beim lesen/schreiben als die SSD.
Bzw. Lust einen Artikel dazu für's Wiki zu schreiben und den Weg dahin soweit zu erklären?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: SSD zum Kompilieren
Hallo xin,
ich habe von C wenig Ahnung. Aber ich vermute, dass man die Verzeichnisse für die Quellen dem Compiler mitgeben kann.
Plan A für genügend RAM:
Ich würde nach dem Login des Programmierusers mit Rsync eine Kopie der C-Quellen auf die Ramdisk machen. Mit grsync gibt es auch eine GUI. Siehe http://wiki.ubuntuusers.de/rsync
Die Quelldatei, die gerade bearbeitet wird, würde ich dann mit dem Compileraufruf auf die Ramdisk schieben.
So würde man nur mit Kopien arbeiten und hätte keine Probleme, wenn der Strom ausfällt.
Mit diesem Befehl habe ich die Ramdisk auf maximal 16 GiB begrenzt (size=128M für 128 MiB). Genutzt wird nur soviel Speicher, wie benötigt wird. Wieviel das ist, kann man sich mit dem Befehl df im Terminal ansehen:
So sieht dann z.B. die RAM-Nutzung in MiB aus:
Plan B für großzügig dimensionierten Hauptspeicher:
Wenn man viel RAM hat, kann man auch für den Input die Laufwerkspuffer statt der Ramdisk nutzen. Das ist pflegeleichter.
Man kopiert einfach die Quelldateien in die Lesepuffer. Das geht z.B. so:
Diese Kopie der Quellen kann frühzeitig erfolgen, wenn RAM danach nicht anderweitig verwendet wird. Die Quellen werden in's Nirwana geschrieben, aber sie bleiben im Lesepuffer. Die zuletzt geänderte Datei steht ohnehin schon im Puffer. Die Ramdisk würde dann nur noch das Compilat oder temporäre Dateien aufnehmen.
Die Datenübertragungsraten vom Lesepuffer auf die Ramdisk betragen auf einem i7-950 ca. 10 GiB/s.
Solche Aktionen machen natürlich keinen Sinn, wenn aufgrund von RAM-Engpässen swap genutzt wird.
ich habe von C wenig Ahnung. Aber ich vermute, dass man die Verzeichnisse für die Quellen dem Compiler mitgeben kann.
Plan A für genügend RAM:
Ich würde nach dem Login des Programmierusers mit Rsync eine Kopie der C-Quellen auf die Ramdisk machen. Mit grsync gibt es auch eine GUI. Siehe http://wiki.ubuntuusers.de/rsync
Die Quelldatei, die gerade bearbeitet wird, würde ich dann mit dem Compileraufruf auf die Ramdisk schieben.
So würde man nur mit Kopien arbeiten und hätte keine Probleme, wenn der Strom ausfällt.
Code: Alles auswählen
# mit Root-Rechten eintragen in /etc/fstab
# bei Ubuntu z.B. mit: gksudo nautilus
# <file system> <mount point> <type> <options> <dump> <pass>
tmpfs /tmp tmpfs nosuid,size=16G 0 0
Code: Alles auswählen
df -m
Dateisystem 1M‐Blöcke Benutzt Verfügbar Ben% Eingehängt auf
tmpfs 16384 1540 14845 10% /tmp
Code: Alles auswählen
free -m
total used free shared buffers cached
Mem: 24159 10123 14035 0 244 7243
-/+ buffers/cache: 2635 21523
Swap: 0 0 0
Plan B für großzügig dimensionierten Hauptspeicher:
Wenn man viel RAM hat, kann man auch für den Input die Laufwerkspuffer statt der Ramdisk nutzen. Das ist pflegeleichter.
Man kopiert einfach die Quelldateien in die Lesepuffer. Das geht z.B. so:
Code: Alles auswählen
cp -R /quellen /dev/null
Die Datenübertragungsraten vom Lesepuffer auf die Ramdisk betragen auf einem i7-950 ca. 10 GiB/s.
Solche Aktionen machen natürlich keinen Sinn, wenn aufgrund von RAM-Engpässen swap genutzt wird.
Liebe Grüße
turbo
turbo
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: SSD zum Kompilieren
Kann man.turbo hat geschrieben:ich habe von C wenig Ahnung. Aber ich vermute, dass man die Verzeichnisse für die Quellen dem Compiler mitgeben kann.
Das Problem ist hier - denke ich - das viele hinzugelinkte Libs noch auf der Festplatte liegen.
Und das komplette System auf die RAM-Disk zu synchronisieren ist vielleicht etwas übertrieben, das erhöht massiv die Bootzeiten.

Heißt, die Datei wird nach dem Editieren auf der HDD geschrieben und sofort(?) automatisch ins RAM kopiert? Das könnte man mal ausprobieren.turbo hat geschrieben:Plan A für genügend RAM:
Ich würde nach dem Login des Programmierusers mit Rsync eine Kopie der C-Quellen auf die Ramdisk machen. Mit grsync gibt es auch eine GUI. Siehe http://wiki.ubuntuusers.de/rsync
Die Quelldatei, die gerade bearbeitet wird, würde ich dann mit dem Compileraufruf auf die Ramdisk schieben.
So würde man nur mit Kopien arbeiten und hätte keine Probleme, wenn der Strom ausfällt.
Um ein ausgechecktes Repository zu synchronisieren, müssten eigentlich 10-20MB reichen.turbo hat geschrieben:Mit diesem Befehl habe ich die Ramdisk auf maximal 16 GiB begrenzt (size=128M für 128 MiB). Genutzt wird nur soviel Speicher, wie benötigt wird. Wieviel das ist, kann man sich mit dem Befehl df im Terminal ansehen:Code: Alles auswählen
# mit Root-Rechten eintragen in /etc/fstab # bei Ubuntu z.B. mit: gksudo nautilus # <file system> <mount point> <type> <options> <dump> <pass> tmpfs /tmp tmpfs nosuid,size=16G 0 0
Das würde ja bedeuten, dass der zweite Kompiliervorgang massiv schneller wäre, weil die Dateien schon im RAM liegen würden. Trotzdem rödelt die Festplatte.turbo hat geschrieben: Plan B für großzügig dimensionierten Hauptspeicher:
Wenn man viel RAM hat, kann man auch für den Input die Laufwerkspuffer statt der Ramdisk nutzen. Das ist pflegeleichter.
Man kopiert einfach die Quelldateien in die Lesepuffer. Das geht z.B. so:
Code: Alles auswählen
cp -R /quellen /dev/null
Das scheint so also nicht zu funktionieren.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: SSD zum Kompilieren
Lass uns mal hinten anfangen:
Sag mal bitte etwas zu Deinem System: Linuxdsitribution, RAM und ein free -m nach einem Reboot.
Bei mir funktioniert das so: Wenn ich ein DVD-ISO von Platte auf Ramdisk kopiere, dauert es das 1. Mal lange. Beim 2. Mal ist ist es ca. 1 Sekunde.Xin hat geschrieben:Das würde ja bedeuten, dass der zweite Kompiliervorgang massiv schneller wäre, weil die Dateien schon im RAM liegen würden. Trotzdem rödelt die Festplatte.turbo hat geschrieben: Plan B für großzügig dimensionierten Hauptspeicher:
Wenn man viel RAM hat, kann man auch für den Input die Laufwerkspuffer statt der Ramdisk nutzen. Das ist pflegeleichter.
Man kopiert einfach die Quelldateien in die Lesepuffer. Das geht z.B. so:
Code: Alles auswählen
cp -R /quellen /dev/null
Das scheint so also nicht zu funktionieren.
Sag mal bitte etwas zu Deinem System: Linuxdsitribution, RAM und ein free -m nach einem Reboot.
Liebe Grüße
turbo
turbo
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: SSD zum Kompilieren
Debian Stable, 8GB, 'free -m' muss warten bis ich wieder an diesem Rechner sitze.turbo hat geschrieben:Sag mal bitte etwas zu Deinem System: Linuxdsitribution, RAM und ein free -m nach einem Reboot.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.