Re: [RFC] kbuild: bpf: Do not run pahole with -j on 32bit userspace

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

 



On 21. 08. 24, 8:40, Jiri Slaby wrote:
 From https://bugzilla.suse.com/show_bug.cgi?id=1229450#c20:
Run on 64bit:
pahole -j32 -> 4.102 GB
pahole -j16 -> 3.895 GB
pahole -j1 -> 3.706 GB

On 32bit (the same vmlinux):
pahole -j32 -> 2.870 GB (crash)
pahole -j16 -> 2.810 GB
pahole -j1 -> 2.444 GB

Look there for full massif report.

From https://bugzilla.suse.com/show_bug.cgi?id=1229450#c21:
(In reply to Jiri Slaby from comment #20)
> | | | ->24.01% (954,816,480B) 0x489B4AB: UnknownInlinedFun (dwarf_loader.c:959)

So given this struct class_member is the largest consumer, running pahole on pahole. The below results in 4.102 GB -> 3.585 GB savings.

--- a/dwarves.h
+++ b/dwarves.h
@@ -487,14 +487,14 @@ int cu__for_all_tags(struct cu *cu,
  */
 struct tag {
        struct list_head node;
+       const char       *attribute;
+       void             *priv;
        type_id_t        type;
        uint16_t         tag;
+       uint16_t         recursivity_level;
        bool             visited;
        bool             top_level;
        bool             has_btf_type_tag;
-       uint16_t         recursivity_level;
-       const char       *attribute;
-       void             *priv;
 };

// To use with things like type->type_enum == perf_event_type+perf_user_event_type @@ -1086,17 +1086,17 @@ static inline int function__inlined(const struct function *func)
 struct class_member {
        struct tag       tag;
        const char       *name;
+       uint64_t         const_value;
        uint32_t         bit_offset;
        uint32_t         bit_size;
        uint32_t         byte_offset;
        int              hole;
        size_t           byte_size;
+       uint32_t         alignment;
        int8_t           bitfield_offset;
        uint8_t          bitfield_size;
        uint8_t          bit_hole;
        uint8_t          bitfield_end:1;
-       uint64_t         const_value;
-       uint32_t         alignment;
        uint8_t          visited:1;
        uint8_t          is_static:1;
        uint8_t          has_bit_offset:1;

--
js
suse labs





[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux