On 4/25/2023 3:56 PM, Volker Dirr wrote:
Hallo,
maybe I misunderstood, but it look like I don't understand tool=cachegrind
correct (or there is a bug).
I have a software. If it runs, then the task manager tells me that is use only
38 MB memory.
Now i used cachegrind like this:
valgrind --tool=cachegrind --LL=2097152,16,64 ./fet-cl --inputfile=German-100_and_0.fet
--randomseeds10=10 --randomseeds11=11 --randomseeds12=12 --randomseeds20=20 --randomseeds21=21
--randomseeds22=22
i got this report:
[...]
==43032== LL misses: 8,283,261 ( 7,840,142 rd + 443,119 wr)
i doubled the LL cache by this:
valgrind --tool=cachegrind --LL=4194304,16,64 ./fet-cl --inputfile=German-100_and_0.fet
--randomseeds10=10 --randomseeds11=11 --randomseeds12=12 --randomseeds20=20 --randomseeds21=21
--randomseeds22=22
and got this:
[...]
==48663== LL misses: 230,426 ( 89,082 rd + 141,344 wr)
That sound ok (larger cache should reduce the misses).
But I continued to double the cache again and again. Up to:
valgrind --tool=cachegrind --LL=268435456,16,64 ./fet-cl --inputfile=German-100_and_0.fet
--randomseeds10=10 --randomseeds11=11 --randomseeds12=12 --randomseeds20=20 --randomseeds21=21
--randomseeds22=22
So much more memory then my program use at all.
But the misses never drop down to 0. They stay at:
[...]
==6637== LL misses: 180,120 ( 41,252 rd + 138,868 wr)
I don't understand that. Shouldn't the misses drop down to 0 as soon as LL is >64MB (since my
software use only 38 MB)? (But i tried up to 256MB and it doesn't drop).
Is that a bug in valgrind or is there a bug in my logic in understanding the LL
misses?
Please let me know.
I would think that, regardless of cache size, the *first* access to a line
causes a miss. These are sometimes called mandatory misses. A large cache
*will* eliminate *capacity* misses.
HTH -- Eliot Moss
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users