Quad-Core Optimierung - Schwierigkeit

  • 9 Antworten
  • Letztes Antwortdatum
D

DieWolle

Fortgeschrittenes Mitglied
8
Hallo liebes Forum,

ersteinmal will ich sagen dass ich mich leider nicht mit dem Programmieren von Android Apps usw auskenne, ich habe einfach nur eine Frage an Entwickler.

Wir haben seit schon einiger Zeit Quad Core Geräte auf dem Markt, aber ich kenne noch keine einzige App oder sogar ein Spiel dass die 4 Kerne auslastet.

Mit Cool Tool hab ich die Auslastung untersucht, und gemerkt dass bei jedem Spiel und jeder App maximal 2 Kerne ausgelastet sind. Das spricht schonmal ziemlich stark für sich dass Quad Core (noch) nichts bringt auf Android, da es keine Apps gibt die diese Power ausnutzen.
Und jetzt zur Frage: Wie schwer ist es denn Apps so zu programmieren, dass sie die Last auf alle Kerne verteilen? Was ist der Grund dass Programmierer nicht die volle Power nutzen wollen, obwohl in High-End spielen möglichst viel Hardware Power gebraucht wird? Liegt es daran dass Entwickler auch für iOS programmieren und es kein Apple Device gibt mit >2 Kernen? Oder ist es einfach sehr sehr schwer?

Ich bin ja mittlerweile froh dass fast jede App die ich habe 2 Kerne auslastet.

Beim suchen in google kam oft die Ausrede von anderen, dass das für noch höheren Stromverbrauch sorgen würde und keiner jede Stunde am Ladegerät hängen will. Aber so kann das ja nicht stimmen.

Ich wette darauf dass 100% Auslastung auf einem Kern einen höheren Energieverbrauch hat, als 25% auf 4 Kernen, besonders weil die Kerne dann mit einer niedrigeren Frequenz arbeiten können. Ansonsten würden Entwickler ja auch nicht auf den DualCore Support umsteigen.

Und jetzt frage ich euch,da ich hier hoffentlich auf kompetentere Leute stoße, als die 0815 User bei anderen Foren, die einfach wenig Ahnung haben.
 
Also Multithreading ist per se nicht so einfach. Da gibts unheimlich viele Fallstricke und Probleme die auftreten können.
Dazu kommt noch, dass man das als Entwickler normalerweise gar nicht beeinflussen kann wie viele CPUs das eigene Programm benutzt.

Und erst das neuste Android 4.3 nutzt überhaupt erst alle vorhandenn Kerne richtig.
For multithreaded processing, the renderer can also now use multithreading across multiple CPU cores to perform certain tasks.
Quelle: Jelly Bean | Android Developers

Ging wohl vorher nicht

Aber es gibt einfach auch Dinge, die man gar nicht auf mehrere Kerne aufteilen kann.
z.B. Daten runterladen und verarbeiten, da bringen auch 100kerne nicht so viel, da man sowieso immer warten muss, bis die Daten runtergeladen worden sind.
Und ob man die Daten dann überhaupt über mehrere Kerne verarbeiten kann kommt stark darauf an was für Daten es sind.

Es gibt einfach viele Aufgaben die nicht parralell laufen können, die muss man einfach seriell abarbeiten: Du berechnest ein Ergebnis, mit dem du weiter rechnen musst z.B. das geht nicht in mehreren Threads weil das 1. Ergebniss sowieso erst mal da sein muss um weiter zu machen.

Ich behaupte mal die meisten Apps (nicht Games) können gar keine 4 Kerne auslasten,
weil die einfach nicht so viel gleichzeitig zu tun haben.
Bestenfalls noch Daten im Hintergrund runterladen und im Vordergrund macht der User irgendwas, macht maximal 2 Threads und somit auch Maximal 2 Kerne die genutzt werden.

Das ist das Haupt"problem" es gibt einfach nich so viel gleichzeitig zu tun um 4 Kerne auszulasten.
 
  • Danke
Reaktionen: DieWolle
Danke, hilft mir weiter!
So hab ich das noch nicht betrachtet, es hat mich nur irritiert dass die HTC Oberfläche (Sense5 auf meinem One) die 4 Kerne alle ausnutzt sobald ich im Drawer scrolle. Sobald mein Finger loslässt ist die Auslastung wieder auf einem Kern, also werden die 4 Kerne wohl genutzt um den flüssigen Betrieb zu garantieren. Deswegen dachte ich dass auch normale Apps irgendwie dafür programmiert werden können. Denn das fehlt so einigen Apps, ein flüssiges Scrollen und Erlebnis.
 
Ich weiß nicht was HTC da noch zugebaut hat.

Der normale Entwickler nutzt aber im regelfall die fertigen Listen von Android beispielsweise und die scrollen halt so wie sie von Google gebaut wurden.

Die wenigstens dürften sich die Mühe machen ihre eigene scrollbare Liste zu implementieren. Im Drawer könnte ich mir vorstellen, dass man das laden der Icons auf mehrere Kerne verteilt, da man diese ja im Prinzip alle einzeln laden könnte.

Aber wie gesagt oftmals geht es einfach nicht.
 
Ich habe vor kurzem einen Artikel gelesen, warum auf dem PC viele Gamer i5 statt i7 Prozessoren bevorzugen. Natürlich sind sie ein bisschen billiger, aber im allgemeinen ging es auch um die Frage, welche Games/Engines überhaupt die Vorteile von i7 Prozessoren nutzen können.

Ich finde den Artikel leider gerade nicht mehr und bin auch bei den Zahlen nicht mehr hundertprozentig sicher, aber eine Erkenntnis war:

(Praktisch) Keine Game-Engine nutzt mehr als 2-4 Threads, deshalb bringt es (momentan) bei Games nichts, eine CPU mit mehr als 4 Cores (oder 4 Cores + Hyperthreading) zu kaufen. Deshalb könnte ich mir gut vorstellen, das es bei Smartphones momentan ähnlich ist, eifach im Bereich von 1-2 Cores statt 2-4.

Edit:
Hier der Link: http://www.techbuyersguru.com/CPUgaming.php
Kurze Erklärung: es geht im Artikel eigentlich darum, ob Hyperthreading etwas bringt. Aber das ist im Grunde einfach gesagt nur sowas wie virtuelle Cores, also eine Quad Core CPU mit Hyperthreading ist dann ähnlich wie eine 8-Core CPU.

Fazit:
The answer must be that modern games, having been developed in an era of multi-core game consoles and increasingly multi-core computers, finally demand more than two cores, but are likely limited intentionally to drawing on the power of four cores (or more specifically, four threads), as this has been the most common multi-core implementation since 2007.

Where does that leave the i7-3770K? Perhaps for now in a no-man's land, but rest assured, just as the i3-3220's Hyperthreading has finally come into its own, we predict that within a few years, most games will be coded for more than four cores. In fact, the next logical jump may be eight - that is, after all, the exact number of cores that both the Playstaion 4 and XBox One will employ...
 
Zuletzt bearbeitet:
Zoopa schrieb:
(Praktisch) Keine Game-Engine nutzt mehr als 2-4 Threads, deshalb bringt es (momentan) bei Games nichts, eine CPU mit mehr als 4 Cores (oder 4 Cores + Hyperthreading) zu kaufen. Deshalb könnte ich mir gut vorstellen, das es bei Smartphones momentan ähnlich ist, eifach im Bereich von 1-2 Cores statt 2-4.

Also mein bf skaliert sich wunderbar auf alle 6 Kerne.

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App
 
Deshalb hab ich auch die Quelle angegeben und extra "(praktisch) keine" geschrieben ;)

Aber ja, die Frostbite Engine da schon schon sehr gut zu sein: Chip Reviews Frostbite 2's Limit - 6 Core Performance in Battlefield 3 » Page 4 of 5 » Chip Reviews

Das scheint dann auch zu bestätigen, dass es durchaus möglich ist für die Entwickler, die Engines auf mehr als 4 Cores zu skalieren. Ich denke (Achtung, Spekulation), dass viele Entwickler ihren Code für die verbreitetsten Komponenten optimieren. Und bei Smartphones sind wohl momentan noch sehr viele Dual-Core Geräte im Umlauf.
 
Zuletzt bearbeitet:
Zoopa schrieb:
Ich habe vor kurzem einen Artikel gelesen, warum auf dem PC viele Gamer i5 statt i7 Prozessoren bevorzugen. Natürlich sind sie ein bisschen billiger, aber im allgemeinen ging es auch um die Frage, welche Games/Engines überhaupt die Vorteile von i7 Prozessoren nutzen können.

Ich finde den Artikel leider gerade nicht mehr und bin auch bei den Zahlen nicht mehr hundertprozentig sicher, aber eine Erkenntnis war:

(Praktisch) Keine Game-Engine nutzt mehr als 2-4 Threads, deshalb bringt es (momentan) bei Games nichts, eine CPU mit mehr als 4 Cores (oder 4 Cores + Hyperthreading) zu kaufen. Deshalb könnte ich mir gut vorstellen, das es bei Smartphones momentan ähnlich ist, eifach im Bereich von 1-2 Cores statt 2-4.

Edit:
Hier der Link: The Tech Buyer's Guru - Dual-Core, Quad-Core, and Hyperthreading Benchmark Analysis
Kurze Erklärung: es geht im Artikel eigentlich darum, ob Hyperthreading etwas bringt. Aber das ist im Grunde einfach gesagt nur sowas wie virtuelle Cores, also eine Quad Core CPU mit Hyperthreading ist dann ähnlich wie eine 8-Core CPU.

Fazit:



Danke für den Link, kenne ich aber schon.
Ein weiterer Grund dafür dass Gamern ein Core i5 langt ist der, dass die i7 erst einiges mehr bringen falls man damit Videobearbeitung und so Zeugs macht. Im Gaming hat man einen zu geringen Leistungszuwachs in Relation zu dem viel höherem Preis.

Dass Hersteller auf das meist verbreitete achten und dementsprechend programmieren (besonders in Spielen), würde bestimmt erklären warum schon fast jedes Spiel Dual Core Support hat, denn mittlerweile sind diese sehr stark verbreitet. Nur sehr günstige Smartphones kommen noch mit einem Singlecore, aber diese sind trotzdem eher nicht zum spielen aufwendiger Spiele in der Lage.

Mal schauen was die nächsten 1-2 Jahre bringen, denn mittlerweile kommen ja bereits Quad-Core´s im mittlerem Preisbereich in Verwendung, das macht die ganze Sache interessanter.
Und auch mal schauen wann oder ob überhaupt iOS Geräte irgendwann einen Quad Core haben werden. Ich würde darauf wetten dass sobald Apple einen Quad-Prozzi für ihr iPad und iPhone rausbringen, die Entwickler sofort versuchen ihre Spiele darauf zu optimieren.
 
Mit welcher APP konntet ihr sehen wieviel Kerne es aus lastet??
 
Ich nutze cool Tool. Musst aber noch in den Einstellungen einstellen dass auch die kernauslastung angezeigt wird. War multicore cpu gauge oder so, musst du aktivieren.

Gesendet von meinem HTC One mit der Android-Hilfe.de App
 
  • Danke
Reaktionen: TheCDC
Zurück
Oben Unten