• Ian Rogers's avatar
    tools api fs: Switch filename__read_str to use io.h · b6a15269
    Ian Rogers authored
    filename__read_str() has its own string reading code that allocates
    memory before reading into it. The memory allocated is sized at BUFSIZ
    that is 8kb. Most strings are short and so most of this 8kb is wasted.
    
    Refactor io__getline(), as io__getdelim(), so that the newline character
    can be configurable and ignored in the case of filename__read_str().
    
    Code like build_caches_for_cpu() in perf's header.c will read many strings
    and hold them in a data structure, in this case multiple strings per
    cache level per CPU.
    
    Using io.h's io__getline() avoids the wasted memory as strings are
    temporarily read into a buffer on the stack before being copied to a
    buffer that grows 128 bytes at a time and is never sized larger than the
    string.
    
    For a 16 hyperthread system the memory consumption of "perf record
    true" is reduced by 180kb, primarily through saving memory when
    reading the cache information.
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Changbin Du <changbin.du@huawei.com>
    Cc: Colin Ian King <colin.i.king@gmail.com>
    Cc: Dmitrii Dolgov <9erthalion6@gmail.com>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Guilherme Amadio <amadio@gentoo.org>
    Cc: Huacai Chen <chenhuacai@kernel.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: K Prateek Nayak <kprateek.nayak@amd.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Li Dong <lidong@vivo.com>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Cc: Miguel Ojeda <ojeda@kernel.org>
    Cc: Ming Wang <wangming01@loongson.cn>
    Cc: Nick Terrell <terrelln@fb.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Sandipan Das <sandipan.das@amd.com>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Steinar H. Gunderson <sesse@google.com>
    Cc: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Cc: Wenyu Liu <liuwenyu7@huawei.com>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Link: https://lore.kernel.org/r/20231127220902.1315692-5-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    b6a15269
fs.c 9.65 KB