William Reich wrote:
> Hello all.
>
> I am using Sol 9 & 10 for Sparc.
> I have a Steams driver that interfaces to a custom board
> across the PCI ( or PCI express ) bus.
>
> We have observed that we are not getting the throughput
> ( messages per second ) that we want.
>
> Using a V240 machine, we can do 25.7k msgs/sec.
> On a V440, we can do 28.2k
> On a T2000, we are getting around 28.2k.
>
> In general, the newer and faster the machine, the higher
> the throughput we want to get.
>
> We observe on a T2000 that our streams queues are going into flow control.
>
> Chapter 12 of the Streams Programming Guide talks about perimeters.
> There are various streams flags defined in this chapter.
> In general, our goal is to have everything as asynchronous as possible
> in the put & service routines.
>
> Our driver using the following flags in its cb_ops structure:
> ( D_NEW | D_MP | D_MTOUTEPERIM | D_MTOCEXCL ).
> I understand that this set of flags will make the open & close routines
> synchronous.
> This is fine.
>
> My question is - do I need to add the D_MTPUTHSARED, D_MTPERQ, and
> _D_MTSVCSHARED
> flags to make sure read and write queue put & service routines can run
> concurrently ?
You need to do that for MT_PUTSHARED, I think. Although, I seem to
recall that the outer perimeter is already shared at the put routine, so
maybe you don't need it if you don't have an inner perimeter.
STREAMs in general, don't seem to perform as well as other interfaces --
the locking overhead associated with perimeters and syncq's can become a
severe bottleneck. This is why in Solaris 10 they moved the TCP/IP
stack away from STREAMs
-- Garrett
>
> thanks
>
>
> W. Reich
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> opensolaris-code mailing list
> [email protected]
> http://mail.opensolaris.org/mailman/listinfo/opensolaris-code
>
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code