Antw: [EXT] Re: Large Immediate and/or Unsolicted Data causes long delays on R2T responses

2020-06-30 Thread Ulrich Windl
>>> The Lee-Man  schrieb am 29.06.2020 um 20:59 in
Nachricht
<4792_1593457181_5EFA3A1C_4792_1489_1_4c70b62c-467c-4860-a951-663fb88158c7o@goog
egroups.com>:
> On Saturday, May 2, 2020 at 11:30:27 AM UTC-7, ajhutc...@gmail.com wrote:
>>
>> I am able to create a condition where the open-iscsi initiator fails to 
>> respond to an R2T request if the immediate/unsolicited data support is 
>> large ~128KB.  I've seen instances where a delay on an R2T is only a few 
>> seconds and other instances where no response is received in 180 seconds.
>>
>> If the host is doing a prefill operation with large writes that can be 
>> completed with immediate data alone and a large write that requires an R2T 
>> is sent, the open-iscsi initiator sometimes fails to respond to the 
>> target's R2T. 
>>
>> After inspecting the code, I am convinced it is caused by the lack of 
>> fairness in the *libiscsi  **iscsi_data_xmit* routine, which always 
>> favors the sending a new command over responding to R2Ts. 
>>
>> /**
>>  * iscsi_data_xmit - xmit any command into the scheduled connection
>>  * @conn: iscsi connection
>>  *
>>  * Notes:
>>  * The function can return -EAGAIN in which case the caller must
>>  * re-schedule it again later or recover. '0' return code means
>>  * successful xmit.
>>  **/
>> static int iscsi_data_xmit(struct iscsi_conn *conn)
>> {
>> ...
>> /*
>> * process mgmt pdus like nops before commands since we should
>> * only have one nop-out as a ping from us and targets should not
>> * overflow us with nop-ins
>> */
>> while (!list_empty(>mgmtqueue)) {
>> ...
>> /* process pending command queue */
>> while (!list_empty(>cmdqueue)) {
>> ...
>> while (!list_empty(>requeue)) {
>>
>>
>> Am I looking at this code correctly?  I guess this order might be better 
>> for parallelization at the target by getting more commands onboard before 
>> responding to outstanding R2Ts. With immediate/unsolicited data enabled, 
>> the overhead of transmitting a new commands if higher and probably 
>> shouldn't come before responding to R2Ts. 
>>
>>
>> Do you have NOPs enabled? If so, do you see this issue with them disabled? 
> I seriously dislike and advise against NOPs. I've never seen them actually 
> help anything.

They could keep an connection alive that is passing through some firewall when 
there is no iSCSI I/O, maybe.

> 
> Have you tried playing with this code, i.e. changing the order? Without 
> looking deeply, are the R2Ts in the command queue and not in the requeue 
> queue?
> 
> What kind of load are you presenting to the server?
> 
> What do you mean by "the immediate/unsolicited data support is large 
> ~128KB"? What setting(s) did you change?
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "open-iscsi" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to open-iscsi+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/open-iscsi/4c70b62c-467c-4860-a951-663fb881 
> 58c7o%40googlegroups.com.




-- 
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to open-iscsi+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/open-iscsi/5EFADD5D02A100039CE2%40gwsmtp.uni-regensburg.de.


Re: Large Immediate and/or Unsolicted Data causes long delays on R2T responses

2020-06-29 Thread The Lee-Man
On Saturday, May 2, 2020 at 11:30:27 AM UTC-7, ajhutc...@gmail.com wrote:
>
> I am able to create a condition where the open-iscsi initiator fails to 
> respond to an R2T request if the immediate/unsolicited data support is 
> large ~128KB.  I've seen instances where a delay on an R2T is only a few 
> seconds and other instances where no response is received in 180 seconds.
>
> If the host is doing a prefill operation with large writes that can be 
> completed with immediate data alone and a large write that requires an R2T 
> is sent, the open-iscsi initiator sometimes fails to respond to the 
> target's R2T. 
>
> After inspecting the code, I am convinced it is caused by the lack of 
> fairness in the *libiscsi  **iscsi_data_xmit* routine, which always 
> favors the sending a new command over responding to R2Ts. 
>
> /**
>  * iscsi_data_xmit - xmit any command into the scheduled connection
>  * @conn: iscsi connection
>  *
>  * Notes:
>  * The function can return -EAGAIN in which case the caller must
>  * re-schedule it again later or recover. '0' return code means
>  * successful xmit.
>  **/
> static int iscsi_data_xmit(struct iscsi_conn *conn)
> {
> ...
> /*
> * process mgmt pdus like nops before commands since we should
> * only have one nop-out as a ping from us and targets should not
> * overflow us with nop-ins
> */
> while (!list_empty(>mgmtqueue)) {
> ...
> /* process pending command queue */
> while (!list_empty(>cmdqueue)) {
> ...
> while (!list_empty(>requeue)) {
>
>
> Am I looking at this code correctly?  I guess this order might be better 
> for parallelization at the target by getting more commands onboard before 
> responding to outstanding R2Ts. With immediate/unsolicited data enabled, 
> the overhead of transmitting a new commands if higher and probably 
> shouldn't come before responding to R2Ts. 
>
>
> Do you have NOPs enabled? If so, do you see this issue with them disabled? 
I seriously dislike and advise against NOPs. I've never seen them actually 
help anything.

Have you tried playing with this code, i.e. changing the order? Without 
looking deeply, are the R2Ts in the command queue and not in the requeue 
queue?

What kind of load are you presenting to the server?

What do you mean by "the immediate/unsolicited data support is large 
~128KB"? What setting(s) did you change?

-- 
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to open-iscsi+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/open-iscsi/4c70b62c-467c-4860-a951-663fb88158c7o%40googlegroups.com.


Large Immediate and/or Unsolicted Data causes long delays on R2T responses

2020-05-02 Thread ajhutchin
I am able to create a condition where the open-iscsi initiator fails to 
respond to an R2T request if the immediate/unsolicited data support is 
large ~128KB.  I've seen instances where a delay on an R2T is only a few 
seconds and other instances where no response is received in 180 seconds.

If the host is doing a prefill operation with large writes that can be 
completed with immediate data alone and a large write that requires an R2T 
is sent, the open-iscsi initiator sometimes fails to respond to the 
target's R2T. 

After inspecting the code, I am convinced it is caused by the lack of 
fairness in the *libiscsi  **iscsi_data_xmit* routine, which always favors 
the sending a new command over responding to R2Ts. 

/**
 * iscsi_data_xmit - xmit any command into the scheduled connection
 * @conn: iscsi connection
 *
 * Notes:
 * The function can return -EAGAIN in which case the caller must
 * re-schedule it again later or recover. '0' return code means
 * successful xmit.
 **/
static int iscsi_data_xmit(struct iscsi_conn *conn)
{
...
/*
* process mgmt pdus like nops before commands since we should
* only have one nop-out as a ping from us and targets should not
* overflow us with nop-ins
*/
while (!list_empty(>mgmtqueue)) {
...
/* process pending command queue */
while (!list_empty(>cmdqueue)) {
...
while (!list_empty(>requeue)) {


Am I looking at this code correctly?  I guess this order might be better 
for parallelization at the target by getting more commands onboard before 
responding to outstanding R2Ts. With immediate/unsolicited data enabled, 
the overhead of transmitting a new commands if higher and probably 
shouldn't come before responding to R2Ts. 


-- 
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to open-iscsi+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/open-iscsi/75d706c2-e331-45bf-b764-6aa77703a45a%40googlegroups.com.