Il giorno lun 24 mar 2025 alle ore 13:09 Karel Zak <k...@redhat.com> ha scritto: > > On Mon, Feb 10, 2025 at 02:34:00PM +0100, Matteo Croce wrote: > > From: xiaofeidu <xiaofe...@meta.com> > > > > mu is a new tool which shows the amount of data that a set of files > > are keeping into the cache. > > mu uses the new cachestat() syscall introduced with Linux 6.5. > > > > Example usage, we use mu over gcc libraries, before and after calling > > gcc for the first time after boot: > > > > $ src/mu --all --human-readable --threshold=1 /usr/lib/gcc/ > > > > $ gcc /dev/null -o /dev/zero > > /usr/bin/ld: /usr/lib64/crt1.o: in function `__wrap_main': > > (.text+0x38): undefined reference to `main' > > collect2: error: ld returned 1 exit status > > > > $ src/mu --all --human-readable --threshold=1 /usr/lib/gcc/ > > 4.0K /usr/lib/gcc/aarch64-redhat-linux/14/crtbegin.o > > 4.0K /usr/lib/gcc/aarch64-redhat-linux/14/crtend.o > > 128K /usr/lib/gcc/aarch64-redhat-linux/14/libgcc.a > > 4.0K /usr/lib/gcc/aarch64-redhat-linux/14/libgcc_s.so > > 140K /usr/lib/gcc/aarch64-redhat-linux/14 > > 140K /usr/lib/gcc/aarch64-redhat-linux > > 140K /usr/lib/gcc/ > > Sounds very similar to fidcore(1) that we already have in util-linux > (since v2.30, June 2017). It was originally based on mincore() and was > extended two years ago to use cachestat(). > > $ fincore /usr/lib/gcc/x86_64-redhat-linux/14/crt* > RES PAGES SIZE FILE > 4K 1 2.7K /usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o > 4K 1 2.9K /usr/lib/gcc/x86_64-redhat-linux/14/crtbeginS.o > 4K 1 3.2K /usr/lib/gcc/x86_64-redhat-linux/14/crtbeginT.o > 4K 1 1.4K /usr/lib/gcc/x86_64-redhat-linux/14/crtend.o > 4K 1 1.4K /usr/lib/gcc/x86_64-redhat-linux/14/crtendS.o > 0B 0 1.8K /usr/lib/gcc/x86_64-redhat-linux/14/crtfastmath.o > 0B 0 1.6K /usr/lib/gcc/x86_64-redhat-linux/14/crtoffloadbegin.o > 0B 0 1.6K /usr/lib/gcc/x86_64-redhat-linux/14/crtoffloadend.o > 0B 0 1.8K /usr/lib/gcc/x86_64-redhat-linux/14/crtoffloadtable.o > 0B 0 1.8K /usr/lib/gcc/x86_64-redhat-linux/14/crtoffloadtableS.o > 0B 0 1.8K /usr/lib/gcc/x86_64-redhat-linux/14/crtprec32.o > 0B 0 1.8K /usr/lib/gcc/x86_64-redhat-linux/14/crtprec64.o > 0B 0 1.8K /usr/lib/gcc/x86_64-redhat-linux/14/crtprec80.o > > For more details, see misc-utils/fincore.c in the util-linux tree. > Maybe there is something we can improve to match your requirements > (and motivation) for "mu". > > Karel > > -- > Karel Zak <k...@redhat.com> > http://karelzak.blogspot.com >
Hi, the biggest differences are that "mu" follows the "du" semantics, analyzing directories recursively and printing cumulative numbers. And it only uses cachestat() without falling back to mincore. Anyway I had prepared a draft util-linux port, it's available here: https://github.com/util-linux/util-linux/pull/3493 Regards, -- Matteo Croce perl -e 'for($t=0;;$t++){print chr($t*($t>>8|$t>>13)&255)}' |aplay