History log of /fuchsia/zircon/kernel/object/buffer_chain_tests.cpp
Revision Date Author Comments
# eecaaa43 30-Jul-2018 Nick Maniscalco <maniscalco@google.com>

[kernel] Move channel message backing off heap and onto the pmm

Channel messages are now allocated directly from the pmm.

Add new page state (VM_PAGE_STATE_IPC) and use it for pages backing
channel messages.

Update kstats command to print memory used by IPC.

Benchmarks on NUC and VIM2 (kernel.smp.maxcpus=4 -> big cores only)
indicate this change has no significant performance impact. Here are
the results from VIM2:

-- Before
Benchmark Time CPU Iterations

Change-Id: Ie199007803537dfe0be50df1c4f89194209cce5d
---------------------------------------------------------
Run on (1 X 24.0003 MHz CPU )
2016-01-01 00:00:53
Channel/Write/64 1871 ns 1884 ns 371483 32.3987MB/s
Channel/Write/1024 2020 ns 2033 ns 344440 480.38MB/s
Channel/Write/32k 9150 ns 9161 ns 76104 3.33122GB/s
Channel/Write/64k 16055 ns 16065 ns 44115 3.79917GB/s
Channel/Read/64 1938 ns 1942 ns 360845 31.4281MB/s
Channel/Read/1024 2093 ns 2097 ns 332677 465.653MB/s
Channel/Read/32k 9454 ns 9463 ns 74126 3.22507GB/s
Channel/Read/64k 16618 ns 16627 ns 42159 3.67085GB/s

-- After
Benchmark Time CPU Iterations
---------------------------------------------------------
Run on (1 X 24.0003 MHz CPU )
2016-01-01 00:00:55
Channel/Write/64 1854 ns 1866 ns 319982 32.7169MB/s
Channel/Write/1024 2018 ns 2029 ns 345068 481.258MB/s
Channel/Write/32k 9066 ns 9086 ns 76926 3.35885GB/s
Channel/Write/64k 16115 ns 16138 ns 44574 3.78208GB/s
Channel/Read/64 1903 ns 1907 ns 366592 31.9976MB/s
Channel/Read/1024 2064 ns 2068 ns 338512 472.176MB/s
Channel/Read/32k 9060 ns 9067 ns 77179 3.36589GB/s
Channel/Read/64k 15576 ns 15582 ns 44964 3.91709GB/s

Tests: Ran the following,
- "k ut all" (buffer_chain_test and message_packet_tests)
- "kstats -m" concurrently with benchmarks to verify kstats

ZX-1852 #comment use pmm

Change-Id: Iacc62a2c49ef3b18c96dad96977c322e989570ed


# b29cfb1a 04-Apr-2018 Nick Maniscalco <maniscalco@google.com>

[kernel] Refactor MessagePacket to use non-contiguous storage

This is a step toward eliminating variable-sized kernel heap
allocations. Prior to this change, MessagePacket allocated a single
contiguous buffer for its fields, handles, and data.

After this change it uses free lists of fixed-sized buffers.

Add BufferChain for copying to/from a list of fixed-sized buffers. In
the future, MBufChain and BufferChain will be merged.

See related bug (ZX-1852) for benchmark results.

ZX-1852 #comment use non-contiguous storage

Tested: "k ut message_packet" and "k ut buffer_chain"

Change-Id: I1c1383c5b6f321c05fe7ae6fe0e7ff75533a7225