Bart Smaalders wrote:

Krishna Yenduri wrote:

...

This lock is uf_lock of the device file descriptor on which the ioctl
is being done. This contention is surprising to me because the routine getf()
seems to be optimized for scaling.

Any ideas on what kind of solution is possible here? We are not able to scale
beyond 5X and this lock seems to be the main culprit.


If all the threads share the same FD, you're going to have problems
if the actual IOCTL is very fast.


The IOCTL here is rather fast, in the order of around 28K instructions
is spent in the kernel.

Can you open the device multiple times?


Not without a major redesign. The threads in a process share some state
that is associated with the minor instance of the device. The sharing is needed to
maintain PKCS #11 semantics for an application.

Is it possible to optimize getf()/releasef() further so that uf_lock is not an issue?

Thanks,
-Krishna



- Bart



_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to