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.
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.
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.
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!
ask away on Stack Overflow for ways to reduce CPU load
Das wäre ohne ein bestimmtes Codebeispiel als "Too Broad"
nicht zum Thema .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.
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.
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.
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.
CousinKokain