All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] btf: Add --btf_prefix flag
@ 2021-05-17 12:06 程书意
  2021-05-17 14:42 ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 17+ messages in thread
From: 程书意 @ 2021-05-17 12:06 UTC (permalink / raw)
  To: dwarves; +Cc: wenan.mao

To solve problems similar to _RH_KABI_REPLACE, _RH_KABI_REPLACE makes 
many structures have different names, resulting in a
particularly large vmlinux btf. For example, running ./pahole -J 
vmlinux-3.10.0-1160.el7.x86_64 without --btf_prefix flag,
the running time is:
                 real 8m28.912s
                 user 8m27.271s
                 sys 0m1.471s
And the size of the generated btf segment is 30678240 bytes.

After adding the patch, running ./pahole 
--btf_prefix=__UNIQUE_ID_rh_kabi_hide -J vmlinux-3.10.0-1160.el7.x86_64. 
The running
time of the command is:
                 real 0m19.634s
                 user 0m18.457s
                 sys 0m1.169s
The size of the generated btf segment is 3117719 bytes.

Thanks.

Signed-off-by: chengshuyi <chengshuyi@linux.alibaba.com>
---
  pahole.c         | 10 ++++++++++
  pahole_strings.h |  2 ++
  strings.c        |  9 +++++++--
  3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/pahole.c b/pahole.c
index dc40ccf..0b4f4ca 100644
--- a/pahole.c
+++ b/pahole.c
@@ -24,6 +24,7 @@
  #include "btf_encoder.h"
  #include "libbtf.h"
  #include "lib/bpf/src/libbpf.h"
+#include "pahole_strings.h"

  static bool btf_encode;
  static bool ctf_encode;
@@ -855,6 +856,7 @@ ARGP_PROGRAM_VERSION_HOOK_DEF = dwarves_print_version;
  #define ARGP_btf_gen_floats       322
  #define ARGP_btf_gen_all       323
  #define ARGP_with_flexible_array   324
+#define ARGP_btf_prefix   325

  static const struct argp_option pahole__options[] = {
      {
@@ -1140,6 +1142,12 @@ static const struct argp_option pahole__options[] = {
          .doc  = "Path to the base BTF file",
      },
      {
+        .name = "btf_prefix",
+        .key = ARGP_btf_prefix,
+        .arg = "STRING",
+        .doc = "Strings with the same prefix are considered the same.",
+    },
+    {
          .name = "btf_encode",
          .key  = 'J',
          .doc  = "Encode as BTF",
@@ -1297,6 +1305,8 @@ static error_t pahole__options_parser(int key, 
char *arg,
          btf_encode_force = true;        break;
      case ARGP_btf_base:
          base_btf_file = arg;            break;
+    case ARGP_btf_prefix:
+        btf_prefix = arg;        break;
      case ARGP_numeric_version:
          print_numeric_version = true;        break;
      case ARGP_btf_gen_floats:
diff --git a/pahole_strings.h b/pahole_strings.h
index 522fbf2..bf3dc7c 100644
--- a/pahole_strings.h
+++ b/pahole_strings.h
@@ -14,6 +14,8 @@ struct strings {
      struct btf *btf;
  };

+extern const char *btf_prefix;
+
  struct strings *strings__new(void);

  void strings__delete(struct strings *strings);
diff --git a/strings.c b/strings.c
index d37f49d..911ce25 100644
--- a/strings.c
+++ b/strings.c
@@ -16,6 +16,9 @@

  #include "dutil.h"
  #include "lib/bpf/src/libbpf.h"
+#include "libbtf.h"
+
+const char *btf_prefix;

  struct strings *strings__new(void)
  {
@@ -47,8 +50,10 @@ strings_t strings__add(struct strings *strs, const 
char *str)

      if (str == NULL)
          return 0;
-
-    index = btf__add_str(strs->btf, str);
+    if(btf_prefix && strncmp(str,btf_prefix,strlen(btf_prefix))==0)
+        index = btf__add_str(strs->btf, btf_prefix);
+    else
+        index = btf__add_str(strs->btf, str);
      if (index < 0)
          return 0;

-- 
1.8.3.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2021-05-27 16:43 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-17 12:06 [PATCH] btf: Add --btf_prefix flag 程书意
2021-05-17 14:42 ` Arnaldo Carvalho de Melo
2021-05-18  9:02   ` chengshuyi
2021-05-18 12:49     ` Arnaldo Carvalho de Melo
2021-05-18 18:30       ` Andrii Nakryiko
2021-05-19  2:44         ` [PATCH v2] pahole: Add --kabi_prefix flag Shuyi Cheng
2021-05-19 20:07           ` Jiri Olsa
     [not found]             ` <5D76A4F3-6F5A-4061-A274-34FFE5CBA338@gmail.com>
2021-05-19 21:18               ` Jiri Olsa
2021-05-19 21:36                 ` Arnaldo
2021-05-20 10:27             ` Shuyi Cheng
2021-05-20 11:49               ` Jiri Olsa
2021-05-20 12:08                 ` Shuyi Cheng
2021-05-20 12:18                   ` Jiri Olsa
2021-05-20 12:30                     ` Shuyi Cheng
2021-05-20 15:25           ` Jiri Olsa
2021-05-21  1:44             ` [PATCH v3] " Shuyi Cheng
2021-05-27 16:43               ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.