• Yonghong Song's avatar
    avoid large map memory allocation in userspace · 067219b2
    Yonghong Song authored
    In bcc, internal BPF_F_TABLE defines a structure to
    contain all the table information for later easy
    extraction. A global structure will be defined
    with this type. Note that this structure will be
    allocated by LLVM during compilation.
    
    In the table structure, one of field is:
       _leaf_type data[_max_entries]
    
    If the _leaf_type and _max_entries are big,
    significant memory will be consumed. A big
    _leaf_type size example is for BPF_STACK_TRACE map
    with 127*8=1016 bytes. If max_entries is bigger
    as well, significant amount of memory will be
    consumed by LLVM.
    
    This patch replaces
      _leaf_type data[_max_entries]
    to
      unsigned ing max_entries
    
    The detail of a test example can be found in issue #1291.
    For the example in #1291, without this patch, for a
    BPF_STACK_TRACE map with 1M entries, the RSS is roughly
    3GB (roughly 3KB per entry). With this patch, it is 5.8MB.
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    067219b2
b_frontend_action.cc 31.1 KB