[PATCH] trace-cmd: Adjust host_trace_info structure to be better packed

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

 



From: "Steven Rostedt (VMware)" <rostedt@xxxxxxxxxxx>

Move the unsigned long long trace_id out from between the boolean
sync_enable and the int ts_samples_count, which removes the gap in the
structure, making the structure size drop from 32 bytes to 24, as displayed
by pahole.

Before:

struct host_trace_info {
        _Bool                      sync_enable;          /*     0     1 */

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

        long long unsigned int     trace_id;             /*     8     8 */
        int                        ts_samples_count;     /*    16     4 */

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

        struct ts_offset_sample * ts_samples;            /*    24     8 */

        /* size: 32, cachelines: 1, members: 4 */
        /* sum members: 21, holes: 2, sum holes: 11 */
        /* last cacheline: 32 bytes */
};

After:

struct host_trace_info {
        long long unsigned int     trace_id;             /*     0     8 */
        _Bool                      sync_enable;          /*     8     1 */

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

        int                        ts_samples_count;     /*    12     4 */
        struct ts_offset_sample * ts_samples;            /*    16     8 */

        /* size: 24, cachelines: 1, members: 4 */
        /* sum members: 21, holes: 1, sum holes: 3 */
        /* last cacheline: 24 bytes */
};

Signed-off-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>
---

This is why I'm picky on ordering of fields in data structures.
I'm sure there's many more places we can update here.

-- Steve


 lib/trace-cmd/trace-input.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/trace-cmd/trace-input.c b/lib/trace-cmd/trace-input.c
index 2f0274d9..a1241f4b 100644
--- a/lib/trace-cmd/trace-input.c
+++ b/lib/trace-cmd/trace-input.c
@@ -83,8 +83,8 @@ struct ts_offset_sample {
 };
 
 struct host_trace_info {
-	bool			sync_enable;
 	unsigned long long	trace_id;
+	bool			sync_enable;
 	int			ts_samples_count;
 	struct ts_offset_sample	*ts_samples;
 };
-- 
2.20.1




[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux