Re: Differences in pahole output from BTF versus from DWARF

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Thu, Jan 10, 2019 at 03:09:49PM -0300, Arnaldo Carvalho de Melo escreveu:
> This last one is interesting, was this done on purpose? I think one
> level of indirection more and we would keep the original expressiveness.
> 
>   @@ -8473,7 +8497,7 @@
>    	struct lruvec_stat *       lruvec_stat_cpu;      /*   136     8 */
>    	atomic_long_t              lruvec_stat[30];      /*   144   240 */
>    	/* --- cacheline 6 boundary (384 bytes) --- */
>   -	long unsigned int          lru_zone_size[5][5];  /*   384   200 */
>   +	long unsigned int          lru_zone_size[25];    /*   384   200 */
>    	/* --- cacheline 9 boundary (576 bytes) was 8 bytes ago --- */

So I see this is something inherited from CTF, that is why when I worked
on making these tools support multiple debugging file formats I added
this option:

[acme@quaco pahole]$ pahole --flat_arrays -C mem_cgroup_per_node -F dwarf ~/git/build/v4.20-rc5+/net/ipv4/tcp.o > /tmp/dwarf
[acme@quaco pahole]$ pahole -C mem_cgroup_per_node -F btf ~/git/build/v4.20-rc5+/net/ipv4/tcp.o > /tmp/btf
[acme@quaco pahole]$ diff -u /tmp/dwarf /tmp/btf
[acme@quaco pahole]$ 

But do we want to keep it this way?

- Arnaldo

[acme@quaco pahole]$ pahole --flat_arrays -C mem_cgroup_per_node -F dwarf ~/git/build/v4.20-rc5+/net/ipv4/tcp.o
struct mem_cgroup_per_node {
	struct lruvec              lruvec;               /*     0   136 */
	/* --- cacheline 2 boundary (128 bytes) was 8 bytes ago --- */
	struct lruvec_stat *       lruvec_stat_cpu;      /*   136     8 */
	atomic_long_t              lruvec_stat[30];      /*   144   240 */
	/* --- cacheline 6 boundary (384 bytes) --- */
	long unsigned int          lru_zone_size[25];    /*   384   200 */
	/* --- cacheline 9 boundary (576 bytes) was 8 bytes ago --- */
	struct mem_cgroup_reclaim_iter iter[13];         /*   584   208 */
	/* --- cacheline 12 boundary (768 bytes) was 24 bytes ago --- */
	struct memcg_shrinker_map * shrinker_map;        /*   792     8 */
	struct rb_node             tree_node;            /*   800    24 */
	long unsigned int          usage_in_excess;      /*   824     8 */
	/* --- cacheline 13 boundary (832 bytes) --- */
	bool                       on_tree;              /*   832     1 */
	bool                       congested;            /*   833     1 */

	/* XXX 6 bytes hole, try to pack */

	struct mem_cgroup *        memcg;                /*   840     8 */

	/* size: 848, cachelines: 14, members: 11 */
	/* sum members: 842, holes: 1, sum holes: 6 */
	/* last cacheline: 16 bytes */
};
[acme@quaco pahole]$



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux