On 07/12/2020 17:23, Arnaldo Carvalho de Melo wrote:
+struct metricgroup_print_sys_idata {
+       struct strlist *metriclist;
+       bool metricgroups;
+       char *filter;
+       bool raw;
+       bool details;
+       struct rblist *groups;
+};
I'm doing some reorg to avoid these holes:

[acme@five perf]$ pahole -C metricgroup_print_sys_idata ~/bin/perf
struct metricgroup_print_sys_idata {
        struct strlist *           metriclist;           /*     0     8 */
        _Bool                      metricgroups;         /*     8     1 */

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

        char *                     filter;               /*    16     8 */
        _Bool                      raw;                  /*    24     1 */
        _Bool                      details;              /*    25     1 */

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

        struct rblist *            groups;               /*    32     8 */

        /* size: 40, cachelines: 1, members: 6 */
        /* sum members: 27, holes: 2, sum holes: 13 */
        /* last cacheline: 40 bytes */
};
[acme@five perf]$

It ended up as:

[acme@five perf]$ pahole -C metricgroup_print_sys_idata ~/bin/perf
struct metricgroup_print_sys_idata {
        struct strlist *           metriclist;           /*     0     8 */
        char *                     filter;               /*     8     8 */
        struct rblist *            groups;               /*    16     8 */
        _Bool                      metricgroups;         /*    24     1 */
        _Bool                      raw;                  /*    25     1 */
        _Bool                      details;              /*    26     1 */

        /* size: 32, cachelines: 1, members: 6 */
        /* padding: 5 */
        /* last cacheline: 32 bytes */
};
[acme@five perf]$o


Hi Arnaldo,

OK, I'll be less wasteful in my struct organization.

Thanks,
John

Reply via email to