Just a little more clarification on this...
If I understand correctly,

ksmps must be an integer (html/ksmps.html)
-b should be a power of two (html/UsingRealTime.html)
-b should be a power-of-two multiple of ksmps (html/UsingOptimizing.html), or at least, for duplex audio, a multiple of ksmps ( htmlCommandFlags.html#FlagsMinusLowerB)

Two questions-
Are all of these statements up-to-date? and,
Is it okay for KR to be non-integer?

I'm guessing non-integer KR is okay, since the docs don't say that it's NOT okay; and since a second is kind of an arbitrary measurement for things that happen that fast.  That is, I don't know of any inherent need for audio buffers to line up with seconds.  But with sr=44100, 4 is the highest possible value of ksmps that a) satisfies all of the musts and shoulds above, and b) equates to an integer KR.

-Chuckk

--
http://www.badmuthahubbard.com