]> git.openfabrics.org - ~emulex/compat-rdma_3.12.git/commit
[PATCH] mlx4_core: Roll back round robin bitmap allocation commit for CQs, SRQs,... ofed_3_5
authorVladimir Sokolovsky <vlad@mellanox.com>
Mon, 9 Dec 2013 16:51:51 +0000 (18:51 +0200)
committerVladimir Sokolovsky <vlad@mellanox.com>
Mon, 9 Dec 2013 16:51:51 +0000 (18:51 +0200)
commita5bbb7655356750939d8864091b1316cfd7dcc10
treea3f2e6387a310bcdc47e9642274b5228a431de85
parentd08aa7350183028278dbe18a331cedc011e77915
[PATCH] 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/0037-mlx4_core-Roll-back-round-robin-bitmap-allocation-co.patch [new file with mode: 0644]