Guten Morgen,
hier ein kurzer Bericht zur aktuellen Lage:
- Wir kämpfen derzeit noch mit den letzten Details des automatischen Rollouts
- Vorallem die Partitionierung des Flash und dessen Formatierung als pSLC hat uns Kopfschmerzen bereitet
- Und dann wollte der Netzwerktreiber auch nicht so richtig
- Und der uBoot wollte partout nicht aus der Boot-Partition starten
- Das hat uns nun eine Woche (mehr) gekostet, als gedacht. Das läuft nun.
- Derzeit arbeiten wir an der Initialsierung des Crypto-Chip des eingebauten PBMs und dessen Registrierung
- Und dann müssen die Testsequenzen noch gefinished werden, sollte aber nicht das große problem werden
Kurz: Diese Woche wird leider doch nichts mehr, dafür aber nächste und dann auch schon doppelt so viele, weil die Endmontage weiter läuft.
Hintergrundinfo: Vom halbierten Flash der 10 mal länger hält - oder was zum Teufel ist pSLC:
Da ihr gerne was über Details wissen wollt, hier noch ein paar Feinheiten:
Die Vorteile von Flash-Speichern sind die geringe Baugröße, der geringe Stromverbrauch und vor allem die enorme Zugriffsgeschwindigkeit - vor allem wenn man das mit mechanischen Festplatten vergleicht. Viele Produkte der letzten 20 Jahre wären ohne Flash nicht möglich gewesen (angefangen von den dadurch kleiner werdenden iPods, Smartphones, Tabletts und schnelle PCs). Ich komme noch aus einer Zeit, da war das 5 MB Festplattenlaufwerk so groß wie eine Waschmaschine und die Wechselfestplatte hatte die Größe einer überdiemensionalen Kuchenabdeckung:
(Steve Parker - Flickr, Lizenz CC BY 2.0)
So wunderbar die Flash-Speicher auch sind, sie verbrauchen sich ein klein wenig. Und zwar bei jedem Löschvorgang wird ein Teil der isolierenden Oxidschicht in den Speicherzellen beschädigt. Es gibt noch ein Dutzend weiterer Effekte die zur Alterung beitragen, aber das ist der wichtigste.
Da wir unsere Produkte auf lange Haltbarkeit auslegen, war es uns immer schon wichtig, nur den besten Flash zu nehmen und diesen maximal zu schonen.
Bereits beim WireGate Server berücksichtigt:
Beim Wiregate Server haben wir daher - schon 2009 - einen Industrial Grade SLC Flash eingebaut, der alleine ein Drittel des HW-Preises ausgemacht hat (bei heutigen Preisen sind es übrigens 50%). Zudem haben wir einen speziellen Cache eingebaut, um das Schreiben auf dem Flash zu reduzieren, letzteres gehört heute immer noch zu einem Betriebsgeheimnis.
Andere haben da weniger drauf geachtet:
Warum das alles so wichtig ist, konnte man beim Wettbewerb sehen. Bei den kleinen Server aus Österreich bootet das System von einer kleinen Micro-SD in Consumer Ausführung, also MLC-Speicher. Das ging solange gut, bis man dort das Feature einschaltete, Datenaufzeichnung / Logging zu betreiben. Dies war wohl anfangs sekündlich einstellbar mit dem Effekt, dass diese Karten binnen Tagen defekt wurden und die Server ausgefallen sind (kann man in allen betreffenden Foren nachlesen). Der Hersteller brauchte damals viele Monate um das Problem zu beheben....
Die Haltbarkeit von Flash-Speichern hinsichtlich der Löschzyklen:
- SLC der ersten Generation schafft pro Zelle etwa 100.000 Zyklen
- SLC der nachfolgenden Genertionen (kleinere Zellen) kommen auf etwa 60.000 Zyklen
- MLC liegen bei etwa 3000 Zyklen
- TLC kommen nur noch auf etwa 300 Zyklen
Leider sind SLC mittlerweile sehr teuer geworden (hinsichtlich der Speichervolumen die man heute braucht) und werden auch nur in geringem Umfang hergestellt. Das meiste an Flash wird in MLC (2 Bit pro Zelle) und in TLC (drei Bit pro Zelle) gebaut. Vor allem der günstige Flash mit hohem Volumen (ab 64 GB aufwärts) wird nur noch in TLC verbaut.
300 Zyklen ist nicht die Welt. Für das Speichern von kaum veränderlichen DAten und Betriebssystemdateien reicht das allerdings locker. Aber bei Datenbanken mit hoher Veränderungsrate kann sich das schon verbrauchen. Betreiber von Dash-CAMs kenen das, nach einem viertel / halben Jahr ist der Speicher "durch".
Wear-Leveling oder alle Zellen sollen sich gleichmäßig abnutzen:
Um dem schnellen Tod einer solchen TLC zu begegnen, zählen die Flash-Controller mit, auf welche Zelle (besser eine Reihe davon) wie oft geschrieben wurde (und och ein paar Dutzend Details mehr) und verteilen das so, dass alle Zellen hinsichtlich der Zyklen geschickt ausgelastet sind. Mittlerweile gibt es noch einen Trick. Die Controller partitionieren den Speicher und nutzen einen Teil der Zellen mit weniger Bit pro Zelle, bedeutet (z.B. bei den Samsung Speichern), dass ein Teil der Flash-Zellen nicht als 3-Bit (TLC), sondern als 2-Bit und 1-Bit Zellen genutzt wird, weil damit die Anzahl der Zyklen solcher Zellen massiv steigt. Zum einen steigt auch die Zugriffsgeschwindigkeit, so dass man diese als schnell Schreibcaches verwenden kann und durch geschicktes Umlagern dehnt man die Endurance aus. Bedeutet, zuerst werden die Zellen als 1-Bit genutzt, dann nach einer gewissen Nutzung als 2-Bit und zum "Ende" hin als 3-Bit. Durch diesen Trick kommt Samsung auf etwa durchschnittlich 600 Zyklen pro Zelle. Wenn man nun die Kapazität ausreichend groß macht und nicht alles nutzt, dann reicht das sehr lange.
Tricks beim Timberwolf Server:
Für die Hutschienenserver wollten wir das besser. Daher lassen wir dort den größten derzeit erhältlichen Flash (gemessen an der Baugröße) auf dem CPU-Board montieren, einen 32 GByte Samsung MLC Flash.
Und hier kommt nun "unser" Trick: Den allergrößten Teil dieses Flash-Specihers formatieren wir als SLC, also nur 1-Bit pro Zelle (anstatt der 2 Bit für die er ausgelegt ist). Das ist damit ein Hybrid, gebaut für 2 Bit, genutzt nur für 1 Bit. Damit sinkt zwar die Kapazität auf die Hälfte (also 16 GB), aber die Anzahl der Zyklen steigt extrem: Etwa auf 30.000 Zyklen. Hurra!
Diese Art von Flash-Speicher, also MLC wie SLC zu betreiben nennen wir pSCL (es gibt mehrere Bezeichnungen dafür am Markt). Das p steht für Pseudo. Es kostet zwar den halben Speicherplatzes, aber erhöht die Zyklenanzahl um ungefähr den Faktor 10, also 30.000 Zyklen anstatt "nu" 3.000. Das kostet zwar ein kleines Vermögen, weil der 32 GB Chip ist sehr teuer, aber das war es uns wert - für eine lange Lebensdauer der Timberwolf Server.
Die Probleme in der letzten und dieser Woche mit der Umsetzung
Soweit so gut, aber den Controller dazu zu bringen, den Flash anders zu formatieren war mal wieder eine (vorher nicht abschätzbare) Fleißarbeit).
Die Module haben wir bekommen mit dem uBoot auf der großen partition. Blöd nur, dass man diese nicht auf pSLC umstellen kann, wenn was drauf ist. Tja, dann wollte der uBoot aber nicht von der Boot-Partiiton laden, dabei haben wir dann das CPU-Modul erstmal gebricked. ("gebricked" = durch falsche Konfig so wertlos gemacht, so dass man ihn auch als Ziegelstein verwenden kann. Auf Deutsch würde man sagen, man hat sich den Ast abgesägt auf dem man sitzt).
Aber: da gab es doch ein Experimentierboard, dass einen der 200 Pins gen Masse zieht und damit bootet er von SD-Card. Yeah, ha auch funktioniert und aus dem Brick, wurde wieder ein CPU-Board. Also ab zur Buchhaltung, die vorzeitige Abschreibung rückgängig machen:
Nächstes Problem: Endlich war dann nach zig versuchen der uBoot auf der Boot-Partition, wunderbar, aber damit funktioniert der Netzwerktreiber nicht mehr - damit konnten wir aber den eMMC-Flash-Manager nicht laden zum Ändern der Controller-Konfig. Ahhhh...
Nach einem längeren Krimi, der uns drei oder vier Tage gekostet hat, war es dann gestern (Donnerstag) soweit: Das CPU-Modul bootet erstmal von der falschen Partition, lädt den Netzwerktreiber und dann holt man über tftp ein Image mit dem der uBoot auf die Boot-Partiiton kommt, dann restart (demnächst per Aktor, weil es muss ein Kaltstart sein) und dann nochmal booten, Netzwerk, tftp, image und wir können den Flash umpartitionieren und umformatieren auf pSLC. Hurra!
Den Rest vom Boot-Prozess haben wir schon länger vorbereitet, nur für das Detail mit dem pSLC mussten wir auf die entsprechend ausgestatteten Module warten, die eine Sonderanfertigung für uns sind.
Lange Rede, kurzer Sinn: Das hat uns jetzt fast eine Woche gekostet und ist der Grund dafür, dass wir die Auslieferung nun nicht diese Woche beginnen konnten.
Warum ich das erzähle: Nun, für die wartenden denke ich, ist es schon wichtig zu sehen, dass wir es uns nicht einfach - trotz allem Druck - leicht machen (wie praktisch die meisten der anderen Hersteller wo das Controlling über die Bauteile bestimmt und alles nur billig sein muss) sondern wir für Euch das technisch beste und verfügbare (aber anbstrengende) realisieren, damit die Server eben nicht fünf Tage nach Ablauf der Gewährleistung defekt werden, sondern solange halten, wie man das technisch machen kann und wir schätzen das hier schon auf durchschnittlich 15 Jahre. Durchschnittlich in dieser Hinsicht bedeutet, es werden 60% durchaus vorher defekt werden und 40% erst danach.
Und noch eine Sache am Rande. WIr bauen ZWEI Flash-Speicher in alle Server ein. Der zweite Flash ist für Backup und ist ebenfalls ein pSLC-Speicher mit hoher Zyklenfestigkeit und einer Endurance von 10 Jahren (Datenspeicherung ohne Strom)! Es ist ein deutsches Markenfabrikat (Flash von Tosiba) und kostet das zehnfache von normalen Micro-SD-Karten und ist in Stückzahlen auch nich schwer erhältlich.
Ich würde mich freuen, wenn Ihr - in Diskussionen mit Freunden - auch auf die besonders wertige HW hinweist und die vielen kleinen, aber wichtigen Details, an die hier gedacht wurde. Und die sehr großzügige und teure Ausstattung mit hochwertigen und doppelten Flash-Speichern gehört dazu. Das ist eines der vielen Alleinstellungsmerkmale. Bitte teilt diese Info auch.
Für die auf den Server wartenden: Bitte verzeiht uns diese Woche der abermaligen Verzögerung. Dafür dass der (nicht wechselbare) Speicher die zehnfache Zeit halten wird, dürfte es das Wert gewesen sein.
lg
Stefan