Wir haben einige Software, die sich auf ein bestimmtes Verhalten einer anderen ( muy häufig verwendete) Anwendung, die sich nun geändert hat, so dass unsere derzeitige Implementierung zwar praktikabel, aber nicht optimal ist.
Wir glauben, dass diese Änderung eine Reihe anderer Anwendungen, insbesondere im Bereich der Leistungsüberwachung, beeinträchtigt haben könnte, und wir haben eine Lösung gefunden, die unserer Meinung nach eine ganze Reihe anderer potenzieller Probleme verbessern wird.
Leider handelt es sich bei der besagten Lösung um eine Kernel-Änderung (relativ einfach, aber mit großen Auswirkungen, wenn wir es vermasseln), und wir haben keine Erfahrung mit der Einreichung von Kernel-Patches zur Überprüfung.
Hat irgendjemand von SO tatsächlich einen Patch eingereicht (obwohl ich alle Antworten zu schätzen weiß, vermute ich, dass die besten Antworten von denjenigen kommen, die den Prozess bereits durchlaufen haben, auch wenn sie nicht erfolgreich waren)? Wurde er angenommen (wie groß sind die Chancen, dass Alan Cox und Co. auf SO herumhängen)?
Welches ist das richtige Verfahren? Ich habe nicht die Absicht, eine E-Mail an Linus zu schicken, da ich weiß, dass er einen Kader von Beschützern hat, die man durchlaufen muss, bevor man zu ihm gelangt. Wie kann ich herausfinden, wer für einen bestimmten Abschnitt des Kernels verantwortlich ist?
Vielleicht bin ich zu optimistisch, wenn ich glaube, dass jemand, von dem die Welt des Kerns noch nie etwas gehört hat, einen Beitrag leisten kann, aber ich würde es gerne herausfinden.
EDIT mit mehr Details:
Die Änderung bezieht sich nicht auf einen Leistungsfehler, sondern auf eine Verbesserung (meiner Meinung nach) der Prozessbuchhaltungseinträge, die (derzeit) geschrieben werden, wenn ein Prozess beendet wird.
Websphere App Server (ach, IBM, Gott segne ihre kleinen Herzen) hat seine Funktionsweise geändert. Früher wurden JVMs regelmäßig beendet, damit ihre Einträge geschrieben wurden und wir diese für die Rückbuchung verwenden konnten. Jetzt lässt sie JVMs monatelang herumliegen, was bedeutet, dass die Daten nicht rechtzeitig verfügbar sind, es sei denn, wir zwingen WAS regelmäßig zum Herunterfahren. Irgendwie glaube ich nicht, dass die Software Group von IBM ihre Software für uns reparieren wird :-). Auf jeden Fall glaube ich, dass es eine nützliche Funktion für andere langlebige Prozesse sein kann.
Derzeit werden Typ-3-Prozessabrechnungsdatensätze geschrieben, wenn ein Prozess beendet wird. Was wir suchen, ist ein Mechanismus, um Typ-N-Datensätze regelmäßig zu schreiben, während ein Prozess noch aktiv ist und die Zahlen seit dem letzten Schreiben (oder dem Prozessstart, wenn dies das erste Mal ist) anzugeben. Anwendungen zur Rückverrechnung oder Leistungsüberwachung können entweder die Typ-3-Datensätze (völlig unverändert) oder die Typ-N-Zwischensätze verwenden. Die derzeitige Lösung besteht darin, /proc/PID/stat für bestimmte Prozesse zu überwachen, aber das ist ein schrecklicher Trick, da er sich nicht gut in die echte Prozessabrechnung integrieren lässt.
Es muss nicht oft sein (wir wären mit 24 Stunden zufrieden), aber es könnte eine Auswirkung auf die Leistung haben, da die Arbeit, die derzeit nur bei process exit() gemacht wird, gelegentlich beim Prozesskontextwechsel gemacht werden muss. Linus et al. mögen diese Idee vielleicht nicht, da es sich um einen Bereich des Codes handelt, der hohe Auswirkungen hat (selbst die Überprüfung, ob seit dem letzten Schreibvorgang 24 Stunden vergangen sind, könnte für sie zu langsam sein).
Trotzdem vielen Dank für die bisherigen Antworten, ich werde sehen, wie ich vorankomme. Geben Sie mir ein paar Tage und ich werde die beste Antwort akzeptieren.
0 Stimmen
Ich kann Ihnen sagen, was sicherlich falsch ist: Linus zu verschicken.