Um eine genauere Messung der maximalen Lebensdauer einiger Programme zu erhalten, würde ich gerne das Laufzeitsystem haben, um häufigere Speicherbereinigungen durchzuführen. Gibt es Flags für GHC, die direkt/indirekt zu mehr GC führen? Ich weiß, performGC
einfügen kann, dass in gewissem Umfang, aber es gibt einige Programme zu instrumentieren.machen GHC mehr GCs tun?
Antwort
Für eine direkte Erhöhung der GCs können Sie das Flag auf etwas niedriger als 0,3 setzen, um die Frequenz des Leerlauf-GC zu erhöhen. Sie können -c
auch so einstellen, dass ein Komprimierungsalgo verwendet wird, der die Speicherauslastung im Allgemeinen reduzieren sollte (um näher an den tatsächlich verwendeten Speicher als an den GC-Overhead zu kommen). Sie können auch -Asize
auf etwas niedriger als 512k setzen, was bei einem kleineren Zuordnungsbereich im Allgemeinen die Anzahl erhöhen sollte. von GCs.
Ich würde davon abraten, eine höhere Häufigkeit von GCs zu erzwingen, wenn Sie nicht speziell eine besser geeignete GC-Optimierung für Ihren Code kennen. GC-Läufe können sehr teuer sein.
Ja, Ihr Programm verwendet "zu viel" Speicher, aber diese Nachsicht macht den GC gut. Wenn Sie einen Overhead von 2-3 Mal des Speichers zulassen, der unbedingt benötigt wird (keine Zahlen für GHCs GC, obwohl), können GC-Läufe viel seltener geplant werden.
Sie sagen, dass Sie die Speicherprofilerstellung nicht aktivieren möchten, da dies die Optimierungen stört, aber das Erzwingen der GC möglicherweise noch schlimmer ist. Wenn Sie den Druck auf den Heap zu stark erhöhen, können Sie GC-Läufe benchmarken.
Vielleicht habe ich das nicht klar gemacht, aber das ist kein Leistungsproblem. Mein einziger Zweck ist es, eine genauere Messung der Live-Größe zu erhalten. Das Laufzeitsystem erhält die Standgröße der Live-Größe von GC, so dass häufiger GC mehr Punkte bedeutet. Es ist mir egal, ob die Gesamtleistung schlechter wird, solange die Messung besser ist. – rem
@rem: OK, das habe ich falsch verstanden. In einem anderen Kommentar sagten Sie, dass das Profiling die Optimierung stört, und ich vermutete, dass es um die Leistung ging. Vielleicht möchten Sie noch überprüfen, ob die Profilerstellung wirklich zu viel Leistung kostet, wenn Sie nur mit "-prof" kompilieren, aber keine Kostenstellen kommentieren. Dann laufe mit z.B. '+ RTS -hb'. Fügen Sie '-i' hinzu, um das Abtastintervall zu steuern. – sapanoia
"Vielleicht möchten Sie noch überprüfen, ob das Profiling wirklich zu viel Leistung kostet". In diesem Zusammenhang bedeutet "zu viel Leistung" den Overhead der Live-Größe gegenüber der realen Live-Größe. Aber wie sagt man dann, wenn es keine genauere Messung der realen Live-Größe gibt? – rem
- 1. Wie Garbage Collection in GHC Haskell deaktivieren?
- 2. Wie XAML-Konverter mehr tun?
- 3. Warum gibt es keine pausenlosen GCs?
- 4. lesen numy Array von GCS in Spark
- 5. Erhöht die Anzahl der verfügbaren Kerne und RAM die JVM mehr GCs?
- 6. GHC Auswertestrategie
- 7. GHC StablePointer Gleichheitsbegründung
- 8. kräftigere Fehlermeldungen von GHC
- 9. Kreuzmoduloptimierungen in GHC
- 10. GHC Optimierung: Collatz Vermutung
- 11. Hotspot erzwingen, um häufige GCs zu erstellen?
- 12. AccessDeniedException: 403 Auf GCS mit Eigentümerkonto verboten
- 13. Wie Upload-Methode in GCS Speicher
- 14. kann nicht mit GCS in Python
- 15. Bild hochladen Android zu GCS mit PHP
- 16. GHC 6.12 und MacPorts
- 17. Wann würde JavaScript == mehr Sinn machen als ===?
- 18. ghc Problem mit hmatrix
- 19. GHC TypeLits Overhead
- 20. Liste der GHC-Erweiterungen
- 21. GHC Linker Fehler (Stack)
- 22. coercible mit GHC 7.10
- 23. Debugging in GHC nach dem Interrupt fortsetzen
- 24. Was muss ich tun, wenn ich eine neue Version von GHC installieren möchte?
- 25. Mehr schöne Art, if-Anweisung Verhalten zu tun
- 26. Mehr als ein Widget, die verschiedene Dinge tun - Android App
- 27. Javascript funktionale Rekursion (aka 'mehr mit weniger tun')
- 28. Wie umgehen GHC Stage Restriction?
- 29. Machen Sie randomisierte Sprites in einer bestimmten Koordinate etwas tun
- 30. Machen Sie PHP Formular nichts tun, wenn Feld leer ist
Spiele mit [GC-Einstellungen] (https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/runtime-control.html) ist wahrscheinlich kein guter Weg, die Speichernutzung zu messen - die Ergebnisse kann immer noch ungenau sein. Bitte sehen Sie sich die Seite [GHC-Speicherprofilerstellung] an (https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/prof-heap.html). –
@ RafałRawicki Profiling ist keine Option für mich, weil es die Optimierung stört – rem