On 08/29/2018 11:43 PM, Yonghong Song wrote:
> Commit a26ca7c982cb ("bpf: btf: Add pretty print support to the
> basic arraymap") and Commit 699c86d6ec21 ("bpf: btf: add pretty print
> for hash/lru_hash maps") added bpffs pretty print for array, hash and
> lru hash maps. The pretty print gives users a structurally formatted
> dump for keys/values which much easy to understand than raw bytes.
> 
> This patch set implemented bpffs pretty print support for
> percpu arraymap, percpu hashmap and percpu lru hashmap.
> For complex key/value types, the pretty print here is even more useful
> due to
>   . large volumne of data making it even harder to correlate bytes
>     to a particular field in a particular cpu.
>   . kernel rounds the value size for each cpu to multiple of 8.
>     User has to be aware of this otherwise wrong value may be
>     derived from cpu 1/2/...
> 
> For example, we may have a bpffs pretty print like below:
>    43602: {
>         cpu0: 
> {43602,0,-43602,0x3,0xaa52,0x3,{43602|[82,170,0,0,0,0,0,0]},ENUM_TWO}
>         cpu1: 
> {43602,0,-43602,0x3,0xaa52,0x3,{43602|[82,170,0,0,0,0,0,0]},ENUM_TWO}
>         cpu2: 
> {43602,0,-43602,0x3,0xaa52,0x3,{43602|[82,170,0,0,0,0,0,0]},ENUM_TWO}
>         cpu3: 
> {43602,0,-43602,0x3,0xaa52,0x3,{43602|[82,170,0,0,0,0,0,0]},ENUM_TWO}
>    }
> for a percpu map.
> 
> This patch also added percpu formatted print on bpftool. For example,
> bpftool may print like below:
>     {
>         "key": 0,
>         "values": [{
>                 "cpu": 0,
>                 "value": {
>                     "ui32": 0,
>                     "ui16": 0,
>                 }
>             },{
>                 "cpu": 1,
>                 "value": {
>                     "ui32": 1,
>                     "ui16": 0,
>                 }
>             },{
>                 "cpu": 2,
>                 "value": {
>                     "ui32": 2,
>                     "ui16": 0,
>                 }
>             },{
>                 "cpu": 3,
>                 "value": {
>                     "ui32": 3,
>                     "ui16": 0,
>                 }
>             }
>         ]
>     }
> 
> Patch #1 implemented bpffs pretty print for percpu arraymap/hash/lru_hash
> in kernel. Patch #2 added the test case in tools bpf selftest test_btf.
> Patch #3 added percpu map btf based dump.
> 
> Yonghong Song (3):
>   bpf: add bpffs pretty print for percpu arraymap/hash/lru_hash
>   tools/bpf: add bpffs percpu map pretty print tests in test_btf
>   tools/bpf: bpftool: add btf percpu map formated dump
> 
>  kernel/bpf/arraymap.c                  |  24 +++++
>  kernel/bpf/hashtab.c                   |  31 ++++++
>  tools/bpf/bpftool/map.c                |  33 +++++-
>  tools/testing/selftests/bpf/test_btf.c | 179 
> ++++++++++++++++++++++++++-------
>  4 files changed, 230 insertions(+), 37 deletions(-)

Applied to bpf-next, thanks Yonghong!

Reply via email to