Akzeptable CPU-Auslastung für 4 Kerne 3,4 GHz i7

Erstellen einer Kioskanwendung für den Mac und Testen der Leistung und CPU-Auslastung. Der Aktivitätsmonitor zeigt insgesamt etwa 90 bis 150 % CPU-Auslastung für die immer aktiven Kiosk-Prozesse.

Meine erste Verwirrung ist, wie die CPU-Auslastung über 100% liegen kann, aber ich verstehe, dass dies mit der Anzahl der Kerne zusammenhängt.

Meine Frage ist also, ist eine Gesamt-CPU-Auslastung von 150 % für einen Kiosk-basierten Mac mit ständig laufenden Anwendungen rund um die Uhr akzeptabel? Oder ist das zu hoch?

Nachtrag> Die Anwendung verarbeitet ständig Videos, die einzige „Interaktion“ ist der Video-Feed, der von einer Webcam kommt.

Macht Ihre Kiosk-App Sachen, die 150 % der CPU rechtfertigen können?

Antworten (3)

Null ist ideal

Idealerweise sollte Ihre Kioskanwendung 0 % CPU verwenden, wenn sie nicht aktiv genutzt wird . Es ist unwahrscheinlich, dass Sie dies ohne erhebliche Anstrengungen erreichen werden, aber selbst ein Ziel von 5 – 10 % Nutzung ist gut.

Bei 150 % konstanter CPU-Auslastung würde die Anwendung von Apples Mac App Store-Rezensenten – und von vielen Kunden – wahrscheinlich als fehlerhaft angesehen werden.

Hinweise: In das richtige Framework auslagern

Wenn Ihre Kioskanwendung bewegte Inhalte wie Werbung oder Filme animiert oder zeigt, tun Sie so viel wie möglich mit AVFoundation /QuickTime. Dadurch wird die Verarbeitung normalerweise auf die GPU verlagert und die CPU im Leerlauf laufen gelassen.

Achten Sie bei anderen Animationen darauf, CoreGraphics und CoreAnimation zu übernehmen. Sie verbessern die Energiebilanz Ihrer Anwendung erheblich.

Leitfaden zur Energieeffizienz für Mac-Apps

Lesen Sie Apples Energy Efficiency Guide for Mac Apps . Die Einleitung legt die Absichten von Apple dar:

Ihre Pflicht als Entwickler

Selbst kleine Ineffizienzen in Apps summieren sich im gesamten System und beeinträchtigen die Akkulaufzeit, Leistung, Reaktionsfähigkeit und Temperatur erheblich. Als App-Entwickler sind Sie verpflichtet, dafür zu sorgen, dass Ihre App so effizient wie möglich läuft. Verwenden Sie empfohlene APIs, damit das System intelligente Entscheidungen darüber treffen kann, wie Ihre App und die von ihr verwendeten Ressourcen am besten verwaltet werden. Vermeiden Sie nach Möglichkeit unnötige Aktualisierungen der Benutzeroberfläche und der E/A. Stromintensive Vorgänge sollten unter der Kontrolle des Benutzers liegen. Wenn ein Benutzer beispielsweise ein großes iMovie-Rendering, einen Automator-Batch-Job, eine Compressor-Konvertierung oder eine Xcode-Kompilierung initiiert, sollte der Benutzer nicht überrascht sein, wenn die Aktivität Strom verbraucht. Streben Sie danach, Ihre App absolut im Leerlauf zu halten, wenn sie nicht auf Benutzereingaben reagiert.

Verwenden Sie die Entwicklertools, um die Energieauswirkungen Ihrer Anwendung zu profilieren, und fragen Sie auf Stack Overflow nach Möglichkeiten, die CPU-Last zu reduzieren. Viel Glück!

Ihre Aussage "Null ist ideal" erinnert mich an die alte Säge, die ich für rein halte Yogi Berra "Theoretisch gibt es keinen Unterschied zwischen Theorie und Praxis. In der Praxis gibt es einen." Sie machen gute Argumente dafür, ein guter Bürger in einer Multi-User- oder Multi-App-Umgebung zu sein, aber die Nutzung von Kiosken ist der Inbegriff eines Nullsummenspiels. Warum mehr ausgeben, um die CPU zu reduzieren oder zusätzliche Hardware zu kaufen, wenn Sie genügend Spielraum für Verschlechterung haben. i7 hat 4 Kerne, 8 Threads und ein Prozess belegt 1,5 der 8 verfügbaren Threads. Scheint mir kein Thema zu sein.
150% CPU würde mich interessieren, unabhängig davon, ob es sich um ein Einweggerät handelt. Ein einzelner 3,6-GHz-i7-Kern ist leistungsstark, und ich frage mich, was all diese Zyklen verbraucht. Aber Sie haben Recht, wenn das Budget es zulässt, die entstehende Wärme kein Problem darstellt und die Benutzererfahrung großartig ist, dann könnte fast jede CPU-Auslastung ignoriert werden.
In der Tat - es ist, als würde jemand sagen: "Ich werde diesen Film nicht genießen, da der Projektor 1500 Watt verbraucht und nur eine Person den Film gerade ansieht." Alles ist ein Kompromiss in der Technik - ja, machen Sie effizienten Code, wenn Sie können, aber 10.000 Dollar zu investieren, um etwas zu wiederholen, das in HyperCard in Animationen für ein Gebäude läuft, das drei Abende in der Woche und den ganzen Tag am Wochenende geöffnet ist, wäre ein schlechter Nutzen Gelder für eine gemeinnützige Organisation. Es ist ein bisschen unterhaltsam zu sehen, wie jeder diese Frage durch seine eigenen Erfahrungen sieht - und ich bin ein Teil davon, es auf meine Weise zu "sehen".
Nur eine Warnung: ask away on Stack Overflow for ways to reduce CPU loadDas wäre ohne ein bestimmtes Codebeispiel als "Too Broad" nicht zum Thema .
„Bei einer konstanten CPU-Auslastung von 150 % würde die Anwendung wahrscheinlich von Apples Mac App Store-Rezensenten – und von vielen Kunden – als fehlerhaft angesehen werden.“ - Wenn es sich um einen Kiosk handelt, warum sollte die App dann im App Store sein und warum könnten Kunden die CPU-Auslastung sehen?

150 % der gesamten CPU wären natürlich nicht nur völlig inakzeptabel - sondern physikalisch unmöglich.
Ich weiß, dass die meisten Sportler zu glauben scheinen, dass sie jedes Mal, wenn sie interviewt werden, mindestens 110 % geben können, aber niemand hat sie auf die einfachen Fakten hingewiesen, denke ich ;-)

Der Aktivitätsmonitor zeigt die CPU-Auslastung einzelner Anwendungen pro Kern [einschließlich virtueller Kerne], sodass 150 % tatsächlich (für einen i7 mit 4 Kernen + Hyperthreading) 150 / 8 = 18,75 % der gesamten Maschinenkapazität sind.

Die Summe System + Benutzer unter den einzelnen Zahlen ist eine genauere Darstellung der gesamten Maschinennutzung und eine schnelle Zusammenfassung der Zahlen gibt Ihnen eine ungefähre Vorstellung davon, dass dies tatsächlich der wahre Stand der Dinge ist.

Geben Sie hier die Bildbeschreibung ein

Nehmen wir dies als Beispiel, die sichtbaren Prozentsätze summieren sich auf etwa 120, aber die Zahl System + Benutzer beträgt nur 5,3 %.
Ich habe 24 virtuelle Kerne [2 x 6-Kern-CPUs + Hyperthreading], also 120/24 = 5 [nahe genug an berücksichtigen Sie die Prozesse weiter unten in der Liste]

Bei 18,75 % der Gesamtkapazität der Maschine halte ich den Aufwand für eine Optimierung für nicht lohnend – es sei denn, ein anderer Prozess benötigt einen erheblichen Teil der verbleibenden Kapazität.

Das ist eine schöne Anlage!

Wenn Sie kein Problem haben, optimieren Sie nicht vorzeitig, wäre mein Rat. Die Hardware wird mit 100 % Auslastung (oder 800 % eines einzelnen Threads im Fall Ihrer Hardware) ohne negative Auswirkungen ausgeführt, und wenn Sie keine blockierenden Effekte haben, werden Ihre Animationen und Kioskfunktionen möglicherweise nicht einmal beeinträchtigt, wenn die CPU rund um die Uhr voll ausgelastet ist .

Wenn es niedrig hängende Früchte gibt, um die CPU zu reduzieren, machen Sie es, aber der i7 hat 4 physische Kerne und berechnet die CPU-Last gegen 8 virtuelle Kerne. Ihre Hardware geht idealerweise auf 800 % und Sie sind derzeit nur bei 150 %? Scheint, als wären Ihre Spezifikationen für Hardware für eine Einweg-Kiosk-Situation mehr als übertrieben. Wenn Sie sich für einen Technologie-Stack entschieden haben und mit dem Inhalt des Kiosks in Bezug auf Animation und Fähigkeit, die Aufgabe auszuführen, für die Sie ihn „einstellen“, zufrieden sind, würde ich mir keine Gedanken über einige extern auferlegte „Best Practices“ machen, selbst wenn Es sind die Richtlinien von Apple, ein effizienter Programmierer zu sein (die übrigens AUSGEZEICHNET sind).

Auf jedem System sollten Sie planen, eine Auslastung von 80 % nicht zu überschreiten, wenn Sie Burst-Verwendungen nicht vergleichen, messen, reagieren und korrigieren können. Dies ist eine Richtlinie, und wenn Sie es besser können, sollten Sie es natürlich tun.

Ich gehe davon aus, dass Sie tatsächlich Remote-Zugriffs-Tools haben, um Updates zu pushen und die CPU im Laufe der Zeit zu messen und zu reagieren, aber die Kiosk-Interaktivität scheint gering zu sein, wenn „wir Geld verlieren“, wenn das System verzögert.

  • Wie lange interagiert ein Benutzer mit dem Kiosk?
  • Wird Geld verdient oder verloren und zu welcher Rate wird das geschätzt?
  • Was passiert mit dem System, wenn es CPU-gebunden wird (aufgrund von Hintergrundprozessen oder Änderungen in der App)?

Jede „Best Practice“ ist wirklich ein Ausgangspunkt für Sie, um Dinge zu bewerten. Es gibt keinen Grund, einen Computer nicht zu 100 % ausgelastet zu lassen, wenn der Haupt-Thread nicht blockiert ist und das System als Ganzes ordnungsgemäß heruntergefahren wird.

150 % konstant ist absoluter Wahnsinn für jede App, die nichts tut, insbesondere für einen (Verbraucher-orientierten, nehme ich an) Kiosk. Es gibt einen nicht unerheblichen Unterschied im Stromverbrauch zwischen Leerlauf und 150 % Nutzung – bei ein paar Maschinen, die rund um die Uhr laufen, kann dies sehr, sehr schnell zu einer anständigen Menge Geld werden.
@Rückgängig Gehen Sie davon aus, dass die App nichts tut, oder wissen Sie , dass die App nichts tut? Das OP gibt an, dass die CPU-Auslastung zwischen 90 und 150% liegt. Ich bin nicht bereit, ein fahrlässiges Softwaredesign/-auswahl von einem Datenpunkt aus anzunehmen. Außerdem scheint Ihre Beschwerde über den Stromverbrauch fadenscheinig zu sein, ohne das Gesamtbild zu kennen. Befürworten Sie die Abschaltung aller Computer, die Energie verbrauchen? Auch hier wirkt Ihre Annahme, dass der Code die CPU unentgeltlich nutzt und auf die Stromkosten reitet, wie ein Trugschluss relativer Entbehrungen .
Natürlich nicht - ich befürworte es nicht als Umweltschützer oder so, aber Tatsache ist, dass wenn Sie diese Kioske betreiben und so viel CPU verbrauchen, ohne guten Grund ("Kiosk" ist in meinen Augen etwas verbraucherorientiert, mit minimaler Arbeit) kann teuer werden, wenn Sie keinen Nutzen daraus ziehen. Ich sage nicht, dass wir alles fallen lassen und uns auf die Energiekosten konzentrieren müssen, aber es ist ein Faktor. Ich würde gerne eine Klarstellung des OP darüber sehen, was er tatsächlich tut, aber wenn es nur darum geht, Informationen anzuzeigen ... stimmt hier etwas nicht.
@Undo Warum kommentieren Sie meine Antwort, wenn das OP geklärt werden muss? 150/800 sind 18,5 % Einschaltdauer - Sie haben eine seltsame "Wahnsinns" -Schwelle, um ein so leicht belastetes System zu charakterisieren.
Die Anwendung verarbeitet Videos, die einzige Interaktion ist der Video-Feed, der von einer Webcam kommt
@eco_bach Das ist eine angemessene Last für Echtzeit-Videoeffekte - insbesondere basierend auf Bildrate und Größe der Kamera.