L1, L2 bzw L3 Cache auslesung möglich?

Tekpoint

Admiral
Registriert
Juni 2007
Beiträge
9.338
Wollte mal fragen ob es schon ein Tool gibt wo man bei CPUs den Cache auslesen kann. Gibt ja mittlerweile so viele Tools das man nicht mehr durch sieht^^

Würde mich mal interessieren wie viel Ausgenutzt wird von den L1, L2 und L3 Cache meines AMD Athlon X2 7750 beim Surfen, Zocken Musik hören, Filme gucken ect.

Mfg Maik
 
Meinst du ob man die Auslastung des Caches auslesen kann? Das geht meines wissens nach nicht. Du kannst höchstens gucken wie groß die Caches sind mit CPU Z.
 
Zuletzt bearbeitet von einem Moderator:
Ja will die Auslastung wissen? Warum sollte es nicht gehen? Man kann ja sonst auch alles auslesen lassen was drin steckt welche Temperatur was hat oder auch wie es ausgelastet ist nur bei den CPUs Cache geht es noch nicht oder gibt es noch nicht wie es scheint.
 
Die Auslastung des Caches kann man nicht auslesen, und man kann davon ausgehem, dass die immer bei 100% liegt... (also wenn dein Betriebssystem gestartet ist usw, bevor es gestartet wird evtl nicht...)

Wenn du noch andere Sorgen hast, immer raus damit. Weil ich frage mich, welche Relevanz diese Infromation überhaupt hätte.

"Warum sollte es nicht gehen?" - ganz einfach weil es nicht geht.
Auslesen ist sowieso die falsche Bezeichnung, "Abfragen" würde besser passen.
Nach dem Motto:
"Lieber CPU, sag mir doch wie warm du bist?".

Für die meisten Dinge sind nun mal spezielle Befehlssätze notwendig. OT: Früher, noch vor Pentium 1-Zeiten hat man für die CPU-Erkennung andere Tricks nehmen müssen (wenn der Befehlt geht muss es mindestens die CPU sein, wenn der Befehl geht mindestens diese, usw...)
 
Zuletzt bearbeitet:
Man kann mit solchen Bilanzen sehen wer ein L3 Cache brauch und wie groß er sein muss. Den der Cache ist ja auch sehr wichtig beim bestimmten Rechen Aufgaben des Rechners.

Und warum sollte er bei 100% liegen immer? Der RAM haut sich doch auch nicht komplett zu. Der CPU Cache könnte doch genauso arbeiten ( das er sich entleert wenn der Rechner gerade nichts zutun hat).
 
Nun, du kannst zwar nicht seine Auslastung sehen (weil die, wie angesprochen, sowieso immer bemüht ist auf Maximum* zu gehen) - du kannst aber sehen, wie effizient sie arbeiten:

http://www.cpuid.com/perfmonitor.php

*der Lx-Cache eines Prozessors ist sehr klein. Wenige KB bis hin zu wenigen MB. Die haben dafür den Vorteil, dass sie extrem schnell an die CPU angebunden sind - wesentlich schneller als der RAM. Damit die CPU also nicht zu oft auf den "langsamen" RAM zugreifen muss, versucht die CPU vorweg zu erraten welche Daten als nächstes angefordert werden könnten und lädt diese dann schon mal in die Caches, ohne dass die Daten schon gebraucht würden. Die Auslastung ist damit (fast) immer maximal, wenn gleich nicht unbedingt immer effizient. Denn wenn die Daten, die die CPU "erraten" hat, falsch sind, muss sie doch auf den lahmen RAM zugreifen.
 
Zuletzt bearbeitet:
Du willst jetzt nicht ehrlich Cache mit RAM vergleichen? Vielleicht liest du dich in das Thema Cache ein, bevor du hier fragst... dann brauchst du auch weniger Konjunktive benutzen.

Aus Sicht eines Programmes gibt es gar keinen Cache, es kann den Cache nicht steuern. Wieso denn auch? Das macht die CPU ja. Die CPU arbeitet hier wie ne Blackbox. Undzu wissen, wieviel Cache was benutzt - ist doch egal... diese Information ist für keinen wirklich relevant - außer vielleicht Software-Entwicker.

Wäre ja wie wenn du beim Autofahren unbedingt wissen müsstest, wieviele Zylinder das Auto hat. Ist das wichtig für den Fahrer? Wohl kaum... Das Auto fährt auch nicht schneller oder langsamer wegen diesem Wissen. Man kann davon ausgehen, dass der Motor schon weiß wie er zu arbeiten hat.

Die CPU verwaltet die Caches selbstständig - und ist bemüht so viel wie möglich zu cachen. Ein leerer Cache wäre nun mal ein sinnloser Cache - siehe Microsofts Bestrebungen den ungenutzten Arbeitsspeicher seit Vista für Anwendungs-Caching zu nutzen.

Dass Caching ein hochkomplexex Thema ist und verschiedene CPUs ganz anders arbeiten - und es wie gesagt vollkommen egal ist, weil die Anwendungen vom Cache nix wissen müssen - macht solche Dinge eh schwieriger. Und warum die CPU sich damit beschäftigten sollte, Informationen zum Cache-Stand abzuliefern, die - bis sie an den Anfragenden geliedert wurden - sowieso nie aktuell sind usw ist mir ein Rätsel... in einer Multitasking-Umgebung kann sich der Zustand des Caches nun mal sehr häufig ändern je nach Prozess, welcher gerade Rechenzeit erhält... der Aufwand zu protokollieren wieviel Cache auf welchen Prozess fällt, wäre im Vergleich zum Nutzen nun mal komplett unverhältnismäßig.
 
Zuletzt bearbeitet:
Hm, aber vielleicht interessiert ihn es auszulesen, was "aktuell" in den CPU-Registern liegt :D :D :D
Das lässt sich bewerkstelligen und dann viel Spaß mit den Infos und achja: Die Hauptregister sind auch IMMER voll :D
 
@AndrewPoison: Joa danke dir sowas in der Art ist ja auch schon mal gut. Wahnsinn wie es rennt^^

@1668mib: Klar hast recht, aber hätte ja sein können das es sowas richtig gibt. Und ich weis was Cache und RAM ist das die Latenzen sau klein sind beim Cache und das er direkt auf /innen den CPU mit eingepflanzt ist.
 
@Keineahnung1234: Genauso wertvoll vermutlich wie die Anzahl der Cores/Prozessoren via msconfig einzustellen

@Tekpoint: Geht ja nicht mal unbedingt um die Latenzen hierbei. Cache wird genutzt um RAM-Zugriffe zwischenzuspeichern, evtl vorauszulesen, einfach mal spekulieren, häufig genutzte Speicherstellen direkt hier zu halten usw... Da wäre es wie gesagt unsinnig wenn die CPU diesen so leer wie möglich halten würde.

Und wie viel die Caches arbeiten dürfte an dem von AndrewPoision verlinkten Tool ja ersichtlich sein. Eine Momentaufnahme macht hier gar keinen Sinn.
 
Zuletzt bearbeitet:
1668mib schrieb:
@Keineahnung1234: Genauso wertvoll vermutlich wie die Anzahl der Cores/Prozessoren via msconfig einzustellen

Man weiß es nicht so genau, ich habe es mal getestet, und es bringt bei Spielen wirklich nur was wenn die Auflösung auf 640*480 gestellt ist, also unfug ^^ hast recht. Wie heißt es doch so schön "Don't Touch A Running System" :D
 
Es würde auch helfen, wenn du den Artikel inkl. Kommentare lesen würdest, dann würdest du sehen, dass der Schlüssel rein gar nichts bringt selbst bei einer Auflösung bei 640x480.

Man lese auch mal von Microsoft:
http://support.microsoft.com/?scid=kb%3Ben-us%3B183063&x=5&y=6 schrieb:
This entry is designed as a secondary source of cache size information for computers on which the HAL cannot detect the L2 cache.
Also die Zahl der Prozessoren, bei denen die HAL-Erkennung des L2-Caches scheitert, geht bei aktuellen sehr stark gegen 0.

Richtig nett auch der Teil:
http://support.microsoft.com/?scid=kb%3Ben-us%3B183063&x=5&y=6 schrieb:
APPLIES TO
* Microsoft Windows NT Server 4.0 Standard Edition
* Microsoft Windows NT Workstation 4.0 Developer Edition
* Microsoft Windows NT Server 4.0 Enterprise Edition

Aber hey, Tuning-Experten vergessen nie einen Registry-Schlüssel, der früher mal von Bedeutung war aber seit einingen Versionen nichts mehr bringt... (nicht mal auf dich bezogen, sondern allgemein auf diese Tuning-Seiten, die so einen Müll verbreiten)


Edit:
@AndrewPoison: Ach ja, das Raten was gebraucht wird ist nur ein Teil der Aufgaben des Caches... auch Dinge die gerade gebraucht wurden bleiben erst mal drin auf die Gefahr hin, dass sie gleich nochmal gebraucht werden...
Denn oft braucht man in einer Speicherseite nicht nur einen Teil sondern gleich viele Bereiche...
 
Zuletzt bearbeitet:
Ich grabe diese Threadleiche hier mal aus. Wie ist es über 10 Jahre später? Gibt es jetzt Tools zum Auslesen des Cache?

Wäre beim 5800X3D ja doch interessant.
 
Das einzige Maß, das mir bekannt ist, um Aussagen über die Nutzung des Caches zu treffen, sind die Cache Misses. Während der Entwicklung können Cache Profiler wie z.B. Valgrinds Cachegrind helfen, Code zu finden, der besonders viele Cache Misses produziert. Hat man ein fertiges Stück Software, kann man z.B. Intel PCM verwenden um sich die Zähler anzeigen zu lassen. Die Anzahl der Cache Misses, lässt allerdings keine Aussage zu, wie viel Cache verwendet wird, ob der Cache von der Anwendung richtig verwendet wird oder ob die Cache Misses die Performance stark negativ beeinflussen. Man kann vielleicht erkennen, wenn man die Anzahl der Cache Misses zwischen zwei CPUs vergleicht, warum die eine CPU möglicherweise schlechter performed als die andere.
 
  • Gefällt mir
Reaktionen: Dome87
Zurück
Oben