On Thu, Nov 19, 2009 at 2:49 AM, Mike Christie <
mich...@cs.wisc.edu> wrote:
> Erez Zilber wrote:
>> open-iscsi sends nop-outs to the target. If the target responds quick
>> enough, we don't get a timeout. I'd like to know (for internal debug
>> purposes) how many times the ping timer almost expired. This sounds
>> like a useful feature also for other open-iscsi developers/users.
>>
>> I was thinking about adding the following mechanism:
>>
>> 1. Add an array of some length to store long nop-outs. Protect it with
>> some lock.
>> 2. If a nop-in (as a response to nop-out) was received after >= 0.7 *
>> ping_to (or 0.8 or whatever), add some info about it to the array
>> (when was the nop-out sent, how much time until we got a nop-in etc).
>> 3. The array should be used in a cyclic way - when it gets full,
>> overwrite the 1st entry.
>> 4. We can dump the info from the array from time to time or the user
>> may use iscsiadm to do that. When this is done, we can delete the
>> contents of the array.
>>
>
> What info did you want to store?
The following info:
1. The exact time when the nop-out was sent.
2. How much time until we got the nop-in.
>
>
> What about some perf counters for it? Add a counter for if a ping took
> a-b secs, b-c secs, and c-d secs.
This is problematic because:
1. You can set your ping timeout to X. According to your suggestion,
we will need to have the following counters:
a. < 0.2*X
b. 0.2*X - 0.4*X
c. 0.4*X - 0.6*X
d. 0.6*X - 0.8*X
e. 0.8*X - X
This means that the names of the counters will change according to
the value of X. You may have different values of X for different
connections which makes this more problematic.
2. If you have the array that I suggest instead of these counters and
you see that on 17:45:07 you had a long ping (that did not time out),
you can check what happened on that time in your target. This may be
very helpful.
Erez