Hm, for example, sysutils/lsof (userspace app) depends on kernel source, and I thought the one Otacilio mentioned is something like it.
Anyway, we should wait for Otacilio's response. ;-) On Mon, 10 Jul 2017 10:18:07 +0300 Konstantin Belousov <[email protected]> wrote: > On Mon, Jul 10, 2017 at 03:40:46PM +0900, Tomoaki AOKI wrote: > > Hi. > > > > Members v_swappgsin and v_vnodepgsin are declared on sys/sys/vmmeter.h > > as > > > > u_int on stable/11@r320798 [1] > > counter_u64_t on head@r320861 [2] > > > > respectively. > > > > Diggin in further, on head@r320861, counter_u64_t is typedef'ed as > > uint64_t * at line 32 of sys/sys/counter.h [3] like below. > > > > typedef uint64_t *counter_u64_t; > > > > So they're "pointers" on head, while "values" on stable/11. > > > > So, as you're on head, it seems you're casting "pointers (addresses)" to > > uint64_t "value". It could be huge and non-expected values. > > Your code would work as expected on stable/11. > > What ? counter_u64_t in userspace in nonsense. > > Whole struct vmmeter is useless in userspace, it is not exported by the > sysctls and is only used in kernel. Sysctl MIBs export individual > counters which should be used with appropriate type, but besides native > uint64_t, 32bit requests are also supported. > > This is why I asked about the type of the vm.v_something and asked for > the explicit fragment of the code which reads the MIBs. > > > > > [1] > > https://svnweb.freebsd.org/base/stable/11/sys/sys/vmmeter.h?annotate=320610 > > > > [2] > > https://svnweb.freebsd.org/base/head/sys/sys/vmmeter.h?annotate=317061 > > > > [3] > > https://svnweb.freebsd.org/base/head/sys/sys/counter.h?annotate=309745 > > > > > > On Sun, 9 Jul 2017 23:15:18 -0300 > > Otac?$B".lio <[email protected]> wrote: > > > > > Dears > > > > > > I'm the maintainer of xosview and I'm debugging rather weird behavior > > > from it in the latest FreeBSD 12 revisions (12.0-CURRENT #0 r320730 > > > AMD64) . The problem is occurring on the lines responsible for > > > collecting statistics about paging. These lines follow: > > > > > > If (pageinfo) { > > > Pageinfo [0] = (uint64_t) vm.v_vnodepgsin + (uint64_t) vm.v_swappgsin; > > > Pageinfo [1] = (uint64_t) vm.v_vnodepgsout + (uint64_t) vm.v_swappgsout; > > > } > > > > > > This code works on FreeBSD 11 and until a short time ago it works at 12. > > > But now it returns extremely large values ?$B".".when interpreted as > > > 64-bit > > > values. A debugging has shown that for this sysctl call the following > > > values ?$B".".are returned in the terminal: > > > sysctl vm.stats.vm.v_vnodepgsin vm.stats.vm.v_swappgsin > > > vm.stats.vm.v_vnodepgsout vm.stats.vm.v_swappgsout > > > Vm.stats.vm.v_vnodepgsin: 47432 > > > Vm.stats.vm.v_swappgsin: 0 > > > Vm.stats.vm.v_vnodepgsout: 19 > > > Vm.stats.vm.v_swappgsout: 0 > > > > > > While the code returns things like: > > > > > > Pageinf [0] = 34359785800; Pageinfo [1] = 140733193388051 > > > Pageinf [0] = 34359785800; Pageinfo [1] = 2678138638516092947 > > > > > > After some tests I found that if I change the code to use a typecast to > > > (uint32_t) then Xosview works correctly.: > > > If (pageinfo) { > > > Pageinfo [0] = (uint32_t) ((uint64_t) vm.v_vnodepgsin + (uint64_t) > > > vm.v_swappgsin); > > > Pageinfo [1] = (uint32_t) ((uint64_t) vm.v_vnodepgsout + (uint64_t) > > > vm.v_swappgsout); > > > } > > > > > > For me, it seems that some code in the kernel is storing values ?$B".".as > > > 32 > > > bits where it should be 64 bits. Is this behavior correct? > > > > > > []'s > > > > > > -Otac?$B".lio > > > _______________________________________________ > > > [email protected] mailing list > > > https://lists.freebsd.org/mailman/listinfo/freebsd-current > > > To unsubscribe, send any mail to "[email protected]" > > > > > > > > > > > > -- > > Tomoaki AOKI <[email protected]> > > _______________________________________________ > > [email protected] mailing list > > https://lists.freebsd.org/mailman/listinfo/freebsd-current > > To unsubscribe, send any mail to "[email protected]" > _______________________________________________ > [email protected] mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "[email protected]" > -- Tomoaki AOKI <[email protected]> _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "[email protected]"
