linux/tools/perf
Arnaldo Carvalho de Melo 3ba4d2e1a8 perf header: Pack 'struct perf_session_env'
Initial struct:

[acme@ssdandy linux]$ pahole -C perf_session_env ~/bin/perf
struct perf_session_env {
	char *                     hostname;             /*     0     8 */
	char *                     os_release;           /*     8     8 */
	char *                     version;              /*    16     8 */
	char *                     arch;                 /*    24     8 */
	int                        nr_cpus_online;       /*    32     4 */
	int                        nr_cpus_avail;        /*    36     4 */
	char *                     cpu_desc;             /*    40     8 */
	char *                     cpuid;                /*    48     8 */
	long long unsigned int     total_mem;            /*    56     8 */
	/* --- cacheline 1 boundary (64 bytes) --- */
	int                        nr_cmdline;           /*    64     4 */

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

	char *                     cmdline;              /*    72     8 */
	int                        nr_sibling_cores;     /*    80     4 */

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

	char *                     sibling_cores;        /*    88     8 */
	int                        nr_sibling_threads;   /*    96     4 */

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

	char *                     sibling_threads;      /*   104     8 */
	int                        nr_numa_nodes;        /*   112     4 */

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

	char *                     numa_nodes;           /*   120     8 */
	/* --- cacheline 2 boundary (128 bytes) --- */
	int                        nr_pmu_mappings;      /*   128     4 */

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

	char *                     pmu_mappings;         /*   136     8 */
	int                        nr_groups;            /*   144     4 */

	/* size: 152, cachelines: 3, members: 20 */
	/* sum members: 128, holes: 5, sum holes: 20 */
	/* padding: 4 */
	/* last cacheline: 24 bytes */
};
[acme@ssdandy linux]$

[acme@ssdandy linux]$ pahole -C perf_session_env --reorganize --show_reorg_steps ~/bin/perf | grep ^/ | grep -v Final
/* Moving 'nr_sibling_cores' from after 'cmdline' to after 'nr_cmdline' */
/* Moving 'nr_numa_nodes' from after 'sibling_threads' to after 'nr_sibling_threads' */
/* Moving 'nr_groups' from after 'pmu_mappings' to after 'nr_pmu_mappings' */
[acme@ssdandy linux]$

Final struct stats:

[acme@ssdandy linux]$ pahole -C perf_session_env --reorganize --show_reorg_steps ~/bin/perf | tail -4
	/* --- cacheline 2 boundary (128 bytes) --- */

	/* size: 128, cachelines: 2, members: 20 */
};   /* saved 24 bytes and 1 cacheline! */
[acme@ssdandy linux]$

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-3d9tshamloinzxcqeb7mtd1n@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2014-01-13 10:06:23 -03:00
..
arch perf tools: Introduce zfree 2013-12-27 15:17:00 -03:00
bench perf bench: Fix two warnings 2013-11-01 10:41:54 -03:00
config perf tools: Move arch setup into seprate Makefile 2014-01-13 10:06:22 -03:00
Documentation perf timechart: Add --highlight option 2013-12-17 16:33:55 -03:00
python perf python: Remove duplicate TID bit from mask 2013-08-07 17:35:25 -03:00
scripts perf tools: Finish the removal of 'self' arguments 2013-11-05 15:32:36 -03:00
tests perf tests: Fix installation tests path setup 2014-01-13 10:06:23 -03:00
ui perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
util perf header: Pack 'struct perf_session_env' 2014-01-13 10:06:23 -03:00
.gitignore perf tools: Ignore 'perf timechart' output file 2013-10-11 12:17:37 -03:00
builtin-annotate.c perf tools: Introduce zfree 2013-12-27 15:17:00 -03:00
builtin-bench.c perf bench: Change the procps visible command-name of invididual benchmark tests plus cleanups 2013-10-23 09:57:34 -03:00
builtin-buildid-cache.c perf tools: Add data object to handle perf data file 2013-10-21 17:33:24 -03:00
builtin-buildid-list.c perf session: Separating data file properties from session 2013-10-21 17:33:25 -03:00
builtin-diff.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
builtin-evlist.c perf tools: Add data object to handle perf data file 2013-10-21 17:33:24 -03:00
builtin-help.c perf help: Fix --help for builtins 2012-10-22 12:35:49 -02:00
builtin-inject.c perf inject: Handle output file via perf_data_file object 2013-12-19 11:38:49 -03:00
builtin-kmem.c perf evsel: Ditch evsel->handler.data field 2013-11-07 10:40:47 -03:00
builtin-kvm.c perf evlist: Move destruction of maps to evlist destructor 2014-01-13 10:06:21 -03:00
builtin-list.c perf list: Add usage 2013-11-05 14:26:41 -03:00
builtin-lock.c perf evsel: Ditch evsel->handler.data field 2013-11-07 10:40:47 -03:00
builtin-mem.c perf mem: Remove unused parameter from dump_raw_samples() 2013-12-19 17:03:39 -03:00
builtin-probe.c perf probe: Support basic dwarf-based operations on uprobe events 2013-12-26 11:22:01 -03:00
builtin-record.c perf evlist: Auto unmap on destructor 2014-01-13 10:06:22 -03:00
builtin-report.c perf report: Print session information only if --stdio is given 2013-12-20 13:36:41 -03:00
builtin-sched.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
builtin-script.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
builtin-stat.c perf stat: Remove misplaced __maybe_unused 2014-01-13 10:06:22 -03:00
builtin-timechart.c perf tools: Introduce zfree 2013-12-27 15:17:00 -03:00
builtin-top.c perf evlist: Move destruction of maps to evlist destructor 2014-01-13 10:06:21 -03:00
builtin-trace.c perf evlist: Auto unmap on destructor 2014-01-13 10:06:22 -03:00
builtin.h perf tools: Add new mem command for memory access profiling 2013-04-01 12:21:44 -03:00
command-list.txt perf tools: Add new mem command for memory access profiling 2013-04-01 12:21:44 -03:00
CREDITS
design.txt
Makefile perf tools: Fix tags/TAGS targets rebuilding 2013-11-27 16:47:14 -03:00
Makefile.perf perf ui/tui: Implement header window 2013-12-26 11:22:02 -03:00
MANIFEST tools lib symbol: Start carving out symbol parsing routines from perf 2013-12-13 10:30:20 -03:00
perf-archive.sh
perf-completion.sh perf completion: Complete 'perf kvm' 2013-12-13 10:30:21 -03:00
perf.c tools/: Convert to new topic libraries 2013-12-16 16:03:27 -03:00
perf.h perf tools: Rename 'perf_record_opts' to 'record_opts 2013-12-19 14:43:45 -03:00