Autor Thema: Frage zur Entwicklung eines ARMv7 (RaspberryPi 2 Model B) OS !?!?  (Gelesen 5889 mal)

JackRong

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
Hallo liebe Community,

ich habe ein Problem: kann mir jemand helfen? :|
Ich möchte ein extrem schnelles OS für den RaspberryPi 2 Model B entwickeln !
1: Wie viel Leistung frisst ein Betriebsystem im Schnitt von der Rechenleistung des Systems / der Hardware ?
        (Da ich im Internet keinerlei Benchmarkvergleiche von gleicher Hardware bei unterschiedlichen Systemen Windows,Linux(Ubuntu,Debian,Fedora usw..) gefunden habe )
                1.1: Falls hier keiner eine Antwort hat ! Wie kann ich das denn am Besten an meinem RaspberryPi messen (ich habe mir schon überlegt, nicht nach benchmarks sondern in hashs(kh/s,mh/s,gh/s) zu messen) wäre dies besser ?
2: Wenn ein Betriebsystem wie RASPBIAN(Debian von raspberrypi.org)und oder UBUNTU MATE (Ubuntu von raspberrypi.org) tatsächlich ineffizient ist (was ich vermute da es ja kompatibel und benutzerfreundlich gestaltet wurde )
        um wie viel Prozent könnte ich mein OS effektiver gestallten (mein Plan wäre: soviel Assembler zu verwenden wie möglich bei so wenig C wie nötig)?
3: Ist dieses Konzept (soviel Assembler wie möglich bei so wenig C wie nötig) umsetztbar und Clever?(!!! ich habe mir bei diesem Projekt keine Zeitvorgabe gesetzt !!! 3 wochen, 3 Jahre eig. komplett egal)
Mit freundlichen Grüßen & Vielen Dank im Voraus
JackRong

Jidder

  • Administrator
  • Beiträge: 1 624
    • Profil anzeigen
Gespeichert
Hallo und Willkommen an Board!

Welches Problem willst du denn lösen? Kannst du die Begriffe Effizenz und Schnelligkeit in dem Kontext konkretisieren?
Dieser Text wird unter jedem Beitrag angezeigt.

JackRong

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
Hallo und erst mal vielen dank für die schnelle Antwort  :-)!

Mein Idealziel wäre ein OS, das so abgespeckt und in Richtung Datenverarbeitung und komplexe Mathematische Berechnungen optimiert ist, dass es alle herkömmlichen verfügbaren Systeme auf dem Raspberry Pi, die ich kenne schlägt (wie gesagt das wäre das Optimal Ziel). Die Kernfrage ist kann ich allein durch ein optimiertes OS die Leistungsfähigkeit des Raspberry Pi in diesem Bereich steigern?

Ich habe bisher nur casual games für Mobiltelefone programmiert (so was wie Pong, Space Invaders, usw... ich beherrsche daher C, Objektiv-C(für iOS), C#  und lerne als Vorbereitung jetzt noch Assembler (AT&T Dialekt). Nun möchte ich ein komplett eigenes Projekt umsetzten und will mir den Traum von einem eigenem kleinem OS erfüllen, Weshalb ich jetzt auch auf Neuland stoße.

!!Darum setzten ich mir kleine Meilensteine!!

Ich möchte nur im Voraus wissen ob dieser Gedankengang richtig ist: Da in herkömmlichen Betriebssystemen neben der von mir entwickelten Anwendung ja im Hintergrund je nach Art des Kernel weitere Prozesse laufen, dadurch verliert das gesamte System an Leistung. Oder irre ich mich da ?  (Den das möchte ich mit meinem OS nicht ! Es soll nur einen Zweck erfüllen und zwar das berechnen von Daten und wenn es nur einfache Multiplikationen sind aber es dabei einfach eine kürzere Rechendauer erzielt !)

Was mir auch noch sehr helfen würde ob noch jemand vielleicht eine bessere Idee hat, bezüglich eines Leistungstest der unterschiedlichen Betriebssysteme zum Vergleichen.
Außerdem ob schon mal jemand aus eurem Forum für ARM Prozessoren ein OS entwickelt hat und worauf man besonders dabei achten muss. (Wo sind die meisten Fehlerquellen ? Wo der größte unterschied in der Programmierung von ARM zu x84 und x64 Prozessoren)

Jidder

  • Administrator
  • Beiträge: 1 624
    • Profil anzeigen
Gespeichert
Eins vorweg: Ich habe nie was mit ARM/Raspberry PI am Hut gehabt.

Ein Betriebssystem steigert nie die Leistungsfähigkeit (bezüglich der Nettoleistung des Systems), sondern im Gegenteil verringert diese. Warum? Weil das Betriebssystem (jetzt mal ganz weit gefasst) zwei Aufgaben hat: Verwaltung von Ressourcen und Zuteilung von Ressourcen an Anwendungen. Ressourcen sind CPU-Zeit, Arbeitsspeicher, Festplattenspeicher, Netzwerkkapazität, Anzeigeplatz auf dem Bildschirm, etc... Der damit verbundene Aufwand verringert die theoretisch mögliche Leistung des Systems um X Prozent, bezüglich Anteil der CPU-Instruktionen, die tatsächlich Daten verarbeiten und nicht nur verwalten, bezüglich Arbeitsspeicher oder Festplattenspeicher, in dem tatsächlich Daten und nicht nur Verwaltungsinformationen stehen, usw.

Warum haben wir also Betriebssysteme? Die Verwaltung der Ressourcen muss irgendwo erfolgen, ansonsten herrscht Chaos im Computer. In vielen Betriebssystemkonzepten ist es selbstverständlich, dass der Kernel (oder ein privilegiertes Modul) zum Beispiel das Dateisystem verwaltet. Würden das die Anwendungen machen, hast du das Problem, dass diese den Zugriff auf das Dateisystem nicht koordinieren und eventuell gegenseitig Daten überschreiben. Das Betriebssystem dient deswegen als Anlaufstelle für alle Anwendungen, und sorgt dafür, dass Dateioperationen nach einem bestimmten Schema durchgeführt werden. Dieses ist für alle Anwendungen gleich und garantiert denen, dass diese Operationen wie erwartet durchgeführt werden oder bei Konflikten entsprechend Rückmeldung gegeben wird.

Das Problem, was ein Betriebssystem also löst, ist eine Balance zu finden zwischen der Umsetzung der Anforderungen mehrerer Anwendung an (ich nenn es mal) Stabilität/Vorhersagbarkeit und dem Verwaltungsaufwand den das Betriebssystem dadurch verursacht.

Der Ansatz der sich daraus ergibt, ist dann natürlich, wenn man weniger Overhead haben will, die Dienstleistungen, die das Betriebssystem gegenüber den Anwendungen bereitstellt, zurückzuschrauben, damit mehr CPU-Zeit, Arbeitsspeicher, etc. für die Anwendung zur Verfügung steht.

Die Frage ist jetzt: Wieviel Prozent kann man da rausholen? Wenn ich in Windows den Ressourcenmonitor anwerfe, sehe ich genau, wieviel CPU-Zeit und Arbeitsspeicher das Betriebssystem und seine Dienste verbrauchen. Im Leerlauf (= 2% CPU-Last durch Firefox während ich das hier Tippe und Musik höre -.-) verbraucht der Kernel 0,2-0.3% CPU-Zeit, der Fenstermanager 0,1% und ein Dienst, den ich nicht zuordnen kann, 0,1%. Der Rest steht den Anwendungen zur Verfügung. Weniger als 0,5% wäre in meinem Fall dann der maximale Gewinn, den du gegenüber Windows erreichen könntest, wenn du den Kernel durch einen Superduperkernel ersetzt und auch den ganzen anderen Mist rauswirfst (Overhead durch Treiber ist da auf beiden Seiten natürlich nicht korrekt einberechnet).

Eine ähnliche Rechnung kannst du auf dem Respberry Pi anstellen. Unter Linux gibt es ja auch entsprechende Tools, die Ressourcenverbrauch bezüglich Anwendung und Betriebssystem aufschlüsseln. Da kannst du dann sogar deine Anwendungsfälle laufen lassen und schauen, wieviel CPU-Auslastung der Prozess erreicht, und wieviel RAM er maximal zugeteilt bekommt.

Also mein Rat ist: Mache Messungen auf dem Pi, und schau dir an, wieviel Leistung ungenutzt bleibt.

Wenn du dann sagst, das ist zu viel, dann wäre das Extrem gar kein Betriebssystem zu schreiben, sondern die Anwendung direkt auf der Hardware laufen zu lassen. Die Anwendung müsste dann entsprechende Hardwaretreiber beinhalten. Hat natürlich den Nachteil, das nichts anderes auf dem System laufen kann. Du kannst natürlich auch den Mittelweg gehen und den ganzen Overhead wie Scheduler, Speicherverwaltung und Dateisystem nach deinen Vorstellungen implementieren. Ob du dir dann genauso soviel Overhead wie andere Betriebssysteme einfängst oder mehr oder weniger, ist von deinen Anforderungen und Fähigkeiten abhängig.

Dein ursprünglicher Post klang für mich danach, als ob du Bitcoins oder so darauf berechnen willst. Ich glaube nicht, dass da ein neues Betriebssystem etwas ausmacht. Es gibt sicherlich schon "die optimale Bitcoin-Distribution" für Raspberry PI.
« Letzte Änderung: 02. July 2015, 02:36 von Jidder »
Dieser Text wird unter jedem Beitrag angezeigt.

JackRong

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
Vielen dank für die Kompetente Antwort  :-),

Ich habe bevor ich mich an euer Forum getraut habe erst mal überlegt was mein OS eigentlich machen soll. Da kam mir die Idee der besseren Performance(Berechnungen, Zugriffszeit etc.) einfach am sinnvollsten vor. Da ich selbst mit dem System Raspbian sehr unzufrieden bin! Wegen der Bootdauer, der Initialisierung des Desktops und der rechen zeit einzelner Daten !

Noch malls zum eigentlich Ziel das ich erreichen will: Ich möchte unbedingt ein eigenes kleines OS, mir geht es NICHT darum ein System zu entwickeln um Bitcoin zu Farmen !! Sondern ich sah darin einfach den besten Vergleichswert. Und in der Idee der Leistungssteigerung sah ich eine Lücke die noch nicht in Sachen Raspberry Pi gestopft wurde. Da dies mein erstes eigenes Projekt ist möchte ich nicht irgend ein X beliebiges OS entwerfen das in der Masse aller anderen unter geht. Sondern eins das einen bestimmten Zweck erfüllt und darin in ferner Zukunft vielleicht sogar das beste ist (ich werde dieses System dann natürlich auch open source machen und jedem zur Verfügung stellen ).

Zudem hatte ich noch die Hoffnung das jemand in diesem Forum vielleicht zufällig an genau so etwas arbeitet und ich mich eventuell anschließen kann (und etwas dabei lerne)?

streetrunner

  • Beiträge: 67
    • Profil anzeigen
Gespeichert
Ich befürchte fast dass Du einige Probleme nicht wirst lösen können. Dein Hauptproblem ist die Anbindung des Massenspeichers, in diesem Fall die SD-Karte. Die arbeitet von Hause aus schon mal recht gemütlich, wimre ist die Anbindung auch nicht so toll gelungen. Wenn Dein OS also andauernd auf Daten warten muss, kann es so schnell sein wie es will, es dreht zwangsweise Däumchen.

Desweiteren denke ich dass hinter Linux und Windows so viele kompetente Leute stecken, dass es als One-Man-Show schwer wird da etwas entgegen zu setzten was wirklich merklich schneller ist. Was man aber machen kann ist z.B. ein Linux ohne GUI zu verwenden (oder generell alles rauswerfen was nicht gebraucht wird). Wenn nur Daten berechnet werden sollen, reicht das dicke aus.

Ansonsten: Nur Mut, fange an zu Programmieren. Ein wirklich minimalistisches System kann durchaus schneller sein als ein handelsübliches (durchaus abgespecktes) OS, allerdings verzichtet man dabei auf Annehmlichkeiten. Etliche dieser Annehmlichkeiten brauchst Du aber evtl. auch gar nicht.

Relbmessa

  • Beiträge: 73
    • Profil anzeigen
Gespeichert
Hallo JackRong,

vielleicht bist Du ja einfach nur naiv und wenn Du weiter machst,
hast Du nicht nur ein Problem sondern reichlich.
Am Anfang steht die Idee und der Fleiß, und Jeder hat so seine Träume!. (Ich auch)

Der Raspberry PI2 B ist nun einmal kein Rennauto.
Aber zum lernen bestimmt nicht schlecht..

Gebe einfach "Raspberry Pi PeterLemon" bei Google oder bei ??.

Dort findest Du, meiner Meinung nach, das was Du suchst.
(alles schön mit Assembler).
Man muß nicht alles selber erfinden.(einfach eine Zeitfrage)

Wenn Du dann noch weiter machst, freue ich mich auf weitere Beiträge von Dir.

Relbmessa   

Relbmessa

  • Beiträge: 73
    • Profil anzeigen
Gespeichert
Hallo,
ich kann Dir wenn Du möchtest, dass aus meinen ersten Gehversuchen entstandenen Raspberry Pi OS, zur
Verfügung stellen.
Es ist nichts besonderes, aber für Studienzwecke sicherlich ganz brauchbar.

Das ganze in Assembler.
IRQ
Textgrafik 64-Spalten x 48-Zeilen (BSchirm Auflösung 1024x768x24)
Secunden-Takt wird angezeigt.

Eine direkte Beschreibung exestiert nicht - nur die Kommentare von der Programmierung
Das ganze an den Raspberry Pi 2B anzupassen, dürfte nicht das Problem sein!!?? :?
Aus 0x20000000 0x3F000000 machen  :-D

Wenn Du Intresse hast, dann schreib hier im Forum.
Ich schaue ab und zu vorbei.
Den Code hier zu posten ist leider aus Platzmangel ungünstig.

Tschüß
Relbmessa
 
   
« Letzte Änderung: 09. July 2015, 09:15 von Relbmessa »

micha

  • Beiträge: 141
    • Profil anzeigen
Gespeichert
Moin,
ich habe eine Idee für dich: Du kannst ja dein OS so schreiben, dass es deinen Raspberry Pi in eine Lisp-Machine verwandelt.

Also dein OS interpretiert Lisp-Code und führt ihn direkt aus. Dann kannst du deine Berechnungen oder was du auch immer machen willst schnell machen. Oder wenn du auch garnichts wirklich sinnvolles damit anfangen willst, so ein Lisp-Pi fände ich cool ;)

Viele Grüße
Micha


Edit: Ich habe mich jetzt nicht informiert, ob es soetwas schon gibt, aber es wäre trotzdem ein umsetzenswertes Projekt. War gerade so ein spontaner Einfall.
« Letzte Änderung: 11. July 2015, 10:37 von micha »

Svenska

  • Beiträge: 1 784
    • Profil anzeigen
Gespeichert
Da ich selbst mit dem System Raspbian sehr unzufrieden bin! Wegen der Bootdauer, der Initialisierung des Desktops und der rechen zeit einzelner Daten !
Normale Betriebssysteme sind eigentlich fast nie CPU-begrenzt, sondern I/O- und Speicher-begrenzt. Auf dem Prinzip basieren batteriebetriebene Geräte (die CPU braucht nahezu keinen Strom, weil sie fast nichts zu tun hat, also ergibt sich die Akkulaufzeit relativ genau aus dem Stromverbrauch von Display, RAM und Flash). Daher - wie Jidder schrieb - wirst du deine CPU auch mit einem extrem effizientem Betriebssystem nicht nennenswert effektiver ausnutzen können als mit Raspbian. Der Linux-Kernel ist schon ziemlich effizient.

Der Rest des Systems ist das aber nicht. Du kannst dir also auf Basis von Linux eine eigene Distribution schreiben, die z.B. weniger auf Kompatiblität achtet und dafür schneller ist. Gute Optimierungsziele wären "möglichst wenig Zugriffe auf die SD-Karte", "möglichst viel RAM für den Plattencache frei lassen", "möglichst effiziente Programme benutzen, oder Programme beschleunigen". Das Hauptproblem solcher Teile sind die SD-Karten.

Kleine Programme brauchen weniger Zugriffe, um vom Massenspeicher gelesen zu werden (z.B. Busybox statt GNU coreutils). Manche Programme murksen viel ohne Cache auf relativ wenigen Daten rum und bremsen sich dadurch selbst aus (z.B. Firefox und dessen Profil, weil das Datenbanken sind). Lagere mal das Firefox-Profil in eine Ramdisk aus und staune, wie schnell der Misthaufen plötzlich ist. Die meisten Flash-Speicher mögen auch keine verteilten Zugriffe (random access). Wenn man die Zugriffe vorher am Stück durchführt und erstmal in einen Cache liest, ist das schneller (probiere mal "readahead" aus, das beschleunigt den Bootvorgang). Und zu guter Letzt ist auch Paging/Swapping für Flash-Speicher unangenehm, weil (a) viele Zugriffe, (b) verteilte Zugriffe, (c) das System steht währenddessen. Das zu vermeiden sollte oberste Priorität haben, also solltest du immer die Speicherauslastung im Blick haben und gegensteuern (auch ein zram kann Wunder wirken).

Wenn es dir also am Herzen liegt, dein Raspberry zu beschleunigen, gibt es wesentlich bessere Ansätze als ein eigener Kernel: Ein eigenes Betriebssystem auf einem vorhandenen Kernel ist auch viel Arbeit, verspricht aber auch viel bessere Leistung.

Gruß,
Svenska

 

Einloggen