On Sun, Mar 06, 2016 at 11:40:55PM -0800, Scott Long wrote: > > > On Mar 6, 2016, at 10:04 PM, Slawa Olhovchenkov <s...@zxy.spb.ru> wrote: > > > > On Sun, Mar 06, 2016 at 06:20:06PM -0800, Scott Long wrote: > > > >> > >>> On Mar 6, 2016, at 1:27 PM, Slawa Olhovchenkov <s...@zxy.spb.ru> wrote: > >>> > >>> On Sun, Mar 06, 2016 at 01:10:42PM -0800, Scott Long wrote: > >>> > >>>> Hi, > >>>> > >>>> The message is harmless, it's a reminder that you should tune the kernel > >>>> for your workload. When the message is triggered, it means that a > >>>> potential command was deferred, likely for only a few microseconds, and > >>>> then everything moved on as normal. > >>>> > >>>> A command uses anywhere from 0 to a few dozen chain frames per I/o, > >>>> depending on the size of the io. The chain frame memory is allocated at > >>>> boot so that it's always available, not allocated on the fly. When I > >>>> wrote this driver, I felt that it would be wasteful to reserve memory > >>>> for a worst case scenario of all large io's by default, so I put in this > >>>> deferral system with a console reminder to for tuning. > >>>> > >>>> Yes, you actually do have 900 io's outstanding. The controller buffers > >>>> the io requests and allows the system to queue up much more than what > >>>> sata disks might allow on their own. It's debatable if this is good or > >>>> bad, but it's tunable as well. > >>>> > >>>> Anyways, the messages should not cause alarm. Either tune up the chain > >>>> frame count, or tune down the max io count. > >>> > >>> I am don't know depends or not, but I see dramaticaly performance drop > >>> at time of this messages. > >>> > >> > >> Good to know. Part of the performance drop might be because of the > >> slowness of printing to the console. > > > > no, on console print may be one per minute > > > > The one-per-minute prints are by design. I should probably make it print > once and then increment a sysctl counter.
I.e. this is can't be cause slowness of printing to the console? > >>> How I can calculate buffers numbers? > >> > >> If your system is new enough to have mpsutil, please run it ‘mpsutil > >> show iocfacts’. > > > > As I see mpsutil present only on -HEAD. > > Can I compile it on 10-STABLE? > > > > Yes, I believe it should compile on 10, but I have not tried it recently. # mpsutil show iocfacts MaxChainDepth: 128 WhoInit: 0x4 NumberOfPorts: 1 MaxMSIxVectors: 0 RequestCredit: 1720 ProductID: 0x2713 IOCCapabilities: 0x185c FWVersion: 0x0f000000 IOCRequestFrameSize: 32 MaxInitiators: 1 MaxTargets: 256 MaxSasExpanders: 11 MaxEnclosures: 12 ProtocolFlags: 0x2 HighPriorityCredit: 116 MaxRepDescPostQDepth: 65504 ReplyFrameSize: 32 MaxVolumes: 2 MaxDevHandle: 286 MaxPersistentEntries: 128 MinDevHandle: 9 > >> If not, then boot your system with bootverbose and send me the output. > > > > I can do this day ago. > > > >>> I am have very heavy I/O. > >> > >> Out of curiosity, do you redefine MAXPHYS/DFLTPHYS in your kernel config? > > > > no > > > >>> This allocated one for all controllers, or allocated for every controller? > >> > >> It’s per-controller. > >> > >> I’ve thought about making the tuning be dynamic at runtime. I > >> implemented similar dynamic tuning for other drivers, but it seemed > >> overly complex for low benefit. Implementing it for this driver > >> would be possible but require some significant code changes. > > > > What cause of chain_free+io_cmds_active << max_chains? > > One cmd can use many chains? > > Yes. A request uses and active command, and depending on the size of the I/O, > it might use several chain frames. > > Scott > _______________________________________________ freebsd-stable@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"