]> git.openfabrics.org - ~emulex/tmp/compat-rdma/.git/commit
mlx4_core: Roll back round robin bitmap allocation commit for CQs, SRQs, and MPTs
authorVladimir Sokolovsky <vlad@mellanox.com>
Mon, 9 Dec 2013 17:04:49 +0000 (19:04 +0200)
committerVladimir Sokolovsky <vlad@mellanox.com>
Mon, 9 Dec 2013 17:04:49 +0000 (19:04 +0200)
commita83991e5821f581f15370060d9ce8e892cc9a14f
treece9fca25f6ecd1b6be47d538be9d5d7137beaf6f
parent9cabba5108c73fd19d0388124d6610a7b303e5a8
mlx4_core: Roll back round robin bitmap allocation commit for CQs, SRQs, and MPTs

Commit f4ec9e9 "mlx4_core: Change bitmap allocator to work in round-robin fashion"
introduced round-robin allocation (via bitmap) for all resources which allocate
via a bitmap.

Round robin allocation is desirable for mcgs, counters, pd's, UARs, and xrcds.
These are simply numbers, with no involvement of ICM memory mapping.

Round robin is required for QPs, since we had a problem with immediate
reuse of a 24-bit QP number (commit f4ec9e9).

However, for other resources which use the bitmap allocator and involve
mapping ICM memory -- MPTs, CQs, SRQs -- round-robin is not desirable.

What happens in these cases is the following:

ICM memory is allocated and mapped in chunks of 256K.

Since the resource allocation index goes up monotonically, the allocator
will eventually require mapping a new chunk. Now, chunks are also unmapped
when their reference count goes back to zero.  Thus, if a single app is
running and starts/exits frequently we will have the following situation:

When the app starts, a new chunk must be allocated and mapped.

When the app exits, the chunk reference count goes back to zero, and the
chunk is unmapped and freed. Therefore, the app must pay the cost of allocation
and mapping of ICM memory each time it runs (although the price is paid only when
allocating the initial entry in the new chunk).

For apps which allocate MPTs/SRQs/CQs and which operate as described above,
this presented a performance problem.

We therefore roll back the round-robin allocator modification for MPTs, CQs, SRQs.

Reported-by: Matthew Finlay <matt@mellanox.com>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
linux-next-pending/0001-mlx4_core-Roll-back-round-robin-bitmap-allocation-co.patch [new file with mode: 0644]