๐Ÿ˜†Shared Receive Queue

ๆœฌๆ–‡ๅฐ†ๅธฆๅคงๅฎถไบ†่งฃๆ›ดๅคšๅ…ณไบŽSRQ็š„็ป†่Š‚ใ€‚

ๅŸบๆœฌๆฆ‚ๅฟต

ไป€ไนˆๆ˜ฏSRQ

ๅ…จ็งฐไธบShared Receive Queue๏ผŒ็›ด่ฏ‘ไธบๅ…ฑไบซๆŽฅๆ”ถ้˜Ÿๅˆ—ใ€‚ๆˆ‘ไปฌ็Ÿฅ้“๏ผŒRDMA้€šไฟก็š„ๅŸบๆœฌๅ•ไฝๆ˜ฏQP๏ผŒๆฏไธชQP้ƒฝ็”ฑไธ€ไธชๅ‘้€้˜Ÿๅˆ—SQๅ’ŒๆŽฅๆ”ถ้˜Ÿๅˆ—RQ็ป„ๆˆใ€‚

SRQๆ˜ฏIBๅ่ฎฎไธบไบ†็ป™ๆŽฅๆ”ถ็ซฏ่Š‚็œ่ต„ๆบ่€Œ่ฎพ่ฎก็š„ใ€‚ๆˆ‘ไปฌๅฏไปฅๆŠŠไธ€ไธชRQๅ…ฑไบซ็ป™ๆ‰€ๆœ‰ๅ…ณ่”็š„QPไฝฟ็”จ๏ผŒ่ฟ™ไธชๅ…ฌ็”จ็š„RQๅฐฑ็งฐไธบSRQใ€‚ๅฝ“ไธŽๅ…ถๅ…ณ่”็š„QPๆƒณ่ฆไธ‹ๅ‘ๆŽฅๆ”ถWQEๆ—ถ๏ผŒ้ƒฝๅกซๅ†™ๅˆฐ่ฟ™ไธชSRQไธญใ€‚็„ถๅŽๆฏๅฝ“็กฌไปถๆŽฅๆ”ถๅˆฐๆ•ฐๆฎๅŽ๏ผŒๅฐฑๆ นๆฎSRQไธญ็š„ไธ‹ไธ€ไธชWQE็š„ๅ†…ๅฎนๆŠŠๆ•ฐๆฎๅญ˜ๆ”พๅˆฐๆŒ‡ๅฎšไฝ็ฝฎใ€‚

ไธบไป€ไนˆ่ฆ็”จSRQ

้€šๅธธๆƒ…ๅ†ตไธ‹๏ผŒๆˆ‘ไปฌๅ‘SQไธญไธ‹ไปปๅŠก็š„ๆ•ฐ้‡่ฆ่ฟœ่ฟœ่ถ…่ฟ‡ๅ‘RQไธญไธ‹ๅ‘ไปปๅŠก็š„ๆ•ฐ้‡ใ€‚ไธบไป€ไนˆๅ‘ข๏ผŸ่ฏทๅ…ˆๅ›žๅฟ†ไธ€ไธ‹ๅ“ชไบ›ๆ“ไฝœ็ฑปๅž‹ไผš็”จๅˆฐSQ๏ผŒๅ“ชไบ›ๅˆไผš็”จๅˆฐRQใ€‚

SEND/WRITE/READ้ƒฝ้œ€่ฆ้€šไฟกๅ‘่ตทๆ–นๅ‘SQไธญไธ‹ๅ‘ไธ€ไธชWR๏ผŒ่€Œๅชๆœ‰ๅ’ŒSEND้…ๅˆ็š„RECVๆ“ไฝœๆ‰้œ€่ฆ้€šไฟกๅ“ๅบ”ๆ–นไธ‹ๅ‘WRๅˆฐRQไธญ๏ผˆๅธฆ็ซ‹ๅณๆ•ฐ็š„Writeๆ“ไฝœไนŸไผšๆถˆ่€—Receive WR๏ผŒๆˆ‘ไปฌ่ฟ˜ๆฒก่ฎฒๅˆฐ๏ผ‰ใ€‚่€Œๆˆ‘ไปฌๅˆ็Ÿฅ้“๏ผŒSEND-RECV่ฟ™ไธ€ๅฏนๆ“ไฝœ้€šๅธธ้ƒฝๆ˜ฏ็”จไบŽไผ ้€’ๆŽงๅˆถไฟกๆฏ๏ผŒWRITEๅ’ŒREADๆ‰ๆ˜ฏ่ฟ›่กŒๅคง้‡่ฟœ็ซฏๅ†…ๅญ˜่ฏปๅ†™ๆ“ไฝœๆ—ถ็š„ไธป่ง’๏ผŒๆ‰€ไปฅ่‡ช็„ถSQ็š„ไฝฟ็”จ็Ž‡ๆ˜ฏ่ฟœ่ฟœ้ซ˜ไบŽRQ็š„ใ€‚

ๆฏไธช้˜Ÿๅˆ—้ƒฝๆ˜ฏๆœ‰ๅฎžไฝ“็š„๏ผŒๅ ็”จ็€ๅ†…ๅญ˜ไปฅๅŠ็ฝ‘ๅก็š„็‰‡ไธŠๅญ˜ๅ‚จ็ฉบ้—ดใ€‚ๅœจๅ•†็”จๅœบๆ™ฏไธ‹๏ผŒQP็š„ๆ•ฐ้‡ๆ˜ฏๅฏ่ƒฝ่พพๅˆฐๅไธ‡็บง็”š่‡ณๆ›ด้ซ˜็š„๏ผŒๅฏนๅ†…ๅญ˜ๅฎน้‡ๆๅ‡บไบ†ๅพˆ้ซ˜็š„่ฆๆฑ‚๏ผŒๅ†…ๅญ˜้ƒฝๆ˜ฏ็™ฝ่Šฑ่Šฑ็š„้“ถๅญไนฐ็š„๏ผŒSRQๅฐฑๆ˜ฏIBๅ่ฎฎไธบไบ†่Š‚็œ็”จๆˆท็š„ๅ†…ๅญ˜่€Œ่ฎพ่ฎก็š„ไธ€็งๆœบๅˆถใ€‚

ๆฅ็œ‹ไธ€ไธ‹ๅ่ฎฎไธญๅฏนไธบไป€ไนˆ่ฆไฝฟ็”จSRQ็š„ๅฎ˜ๆ–น่งฃ้‡Š๏ผˆ10.2.9.1็ซ ่Š‚๏ผ‰๏ผš

Without SRQ, an RC, UC or UD Consumer must post the number of receive WRs necessary to handle incoming receives on a given QP. If the Consumer cannot predict the incoming rate on a given QP, because, for example, the connection has a bursty nature, the Consumer must either: post a sufficient number of RQ WRs to handle the highest incoming rate for each connection, or, for RC, let message flow control cause the remote sender to back off until local Consumer posts more WRs. โ€ข Posting sufficient WRs on each QP to hold the possible incoming rate, wastes WQEs, and the associated Data Segments, when the Receive Queue is inactive. Furthermore, the HCA doesnโ€™t provide a way of reclaiming these WQEs for use on other connections. โ€ข Letting the RC message flow control cause the remote sender to back off can add unnecessary latencies, specially if the local Consumer is unaware that the RQ is starving.

็ฎ€ๅ•ๆฅ่ฏด๏ผŒๅฐฑๆ˜ฏๆฒกๆœ‰SRQ็š„ๆƒ…ๅ†ตไธ‹๏ผŒๅ› ไธบRC/UC/UD็š„ๆŽฅๆ”ถๆ–นไธ็Ÿฅ้“ๅฏน็ซฏไป€ไนˆๆ—ถๅ€™ไผšๅ‘้€่ฟ‡ๆฅๅคšๅฐ‘ๆ•ฐๆฎ๏ผŒๆ‰€ไปฅๅฟ…้กปๅšๅฅฝๆœ€ๅ็š„ๆ‰“็ฎ—๏ผŒๅšๅฅฝ็ชๅ‘ๆ€งๆ”ถๅˆฐๅคง้‡ๆ•ฐๆฎ็š„ๅ‡†ๅค‡๏ผŒไนŸๅฐฑๆ˜ฏๅ‘RQไธญไธ‹ๅ‘่ถณ้‡็š„็š„ๆŽฅๆ”ถWQE๏ผ›ๅฆๅค–RCๆœๅŠก็ฑปๅž‹ๅฏไปฅๅˆฉ็”จๆตๆŽงๆœบๅˆถๆฅๅๅŽ‹ๅ‘้€ๆ–น๏ผŒไนŸๅฐฑๆ˜ฏๅ‘Š่ฏ‰ๅฏน็ซฏโ€ๆˆ‘่ฟ™่พนRQ WQEไธๅคŸไบ†โ€œ๏ผŒ่ฟ™ๆ ทๅ‘้€็ซฏๅฐฑไผšๆš‚ๆ—ถๆ”พ็ผ“ๆˆ–ๅœๆญขๅ‘้€ๆ•ฐๆฎใ€‚

ไฝ†ๆ˜ฏๆญฃๅฆ‚ๆˆ‘ไปฌๅ‰ๆ–‡ๆ‰€่ฏด๏ผŒ็ฌฌไธ€็งๆ–นๆณ•็”ฑไบŽๆ˜ฏไธบๆœ€ๅๆƒ…ๅ†ตๅ‡†ๅค‡็š„๏ผŒๅคง้ƒจๅˆ†ๆ—ถๅ€™ๆœ‰ๅคง้‡็š„RQ WQEๅค„ไบŽ็ฉบ้—ฒ็Šถๆ€ๆœช่ขซไฝฟ็”จ๏ผŒ่ฟ™ๅฏนๅ†…ๅญ˜ๆ˜ฏไธ€็งๆžๅคงๅœฐๆตช่ดน๏ผ›็ฌฌไบŒ็งๆ–นๆณ•่™ฝ็„ถไธ็”จไธ‹ๅ‘้‚ฃไนˆๅคšRQ WQEไบ†๏ผŒไฝ†ๆ˜ฏๆตๆŽงๆ˜ฏๆœ‰ไปฃไปท็š„๏ผŒๅณไผšๅขžๅŠ ้€šไฟกๆ—ถๅปถใ€‚

่€ŒSRQ้€š่ฟ‡ๅ…่ฎธๅพˆๅคšQPๅ…ฑไบซๆŽฅๆ”ถWQE๏ผˆไปฅๅŠ็”จไบŽๅญ˜ๆ”พๆ•ฐๆฎ็š„ๅ†…ๅญ˜็ฉบ้—ด๏ผ‰ๆฅ่งฃๅ†ณไบ†ไธŠ้ข็š„้—ฎ้ข˜ใ€‚ๅฝ“ไปปไฝ•ไธ€ไธชQPๆ”ถๅˆฐๆถˆๆฏๅŽ๏ผŒ็กฌไปถไผšไปŽSRQไธญๅ–ๅ‡บไธ€ไธชWQE๏ผŒๆ นๆฎๅ…ถๅ†…ๅฎนๅญ˜ๆ”พๆŽฅๆ”ถๅˆฐ็š„ๆ•ฐๆฎ๏ผŒ็„ถๅŽ็กฌไปถ้€š่ฟ‡Completion Queueๆฅ่ฟ”ๅ›žๆŽฅๆ”ถไปปๅŠก็š„ๅฎŒๆˆไฟกๆฏ็ป™ๅฏนๅบ”็š„ไธŠๅฑ‚็”จๆˆทใ€‚

ๆˆ‘ไปฌๆฅ็œ‹ไธ€ไธ‹ไฝฟ็”จSRQๆฏ”ไฝฟ็”จๆ™ฎ้€š็š„RQๅฏไปฅ่Š‚็œๅคšๅฐ‘ๅ†…ๅญ˜[1]๏ผš

ๅ‡่ฎพๆŽฅๅ—ๆ•ฐๆฎ็š„่Š‚็‚นไธŠๆœ‰NๅฏนQP๏ผŒๅนถไธ”ๆฏไธชQP้ƒฝๅฏ่ƒฝๅœจ้šๆœบ็š„ๆ—ถ้—ดๆ”ถๅˆฐ่ฟž็ปญ็š„Mไธชๆถˆๆฏ๏ผˆๆฏไธชๆถˆๆฏ้ƒฝ้œ€่ฆๆถˆ่€—ไธ€ไธชRQไธญ็š„WQE๏ผ‰๏ผŒ

  • ๅฆ‚ๆžœไธไฝฟ็”จSRQ็š„่ฏ๏ผŒ็”จๆˆทไธ€ๅ…ฑ้œ€่ฆไธ‹ๅ‘N * MไธชRQ WQEใ€‚

  • ๅฆ‚ๆžœไฝฟ็”จSRQ็š„่ฏ๏ผŒ็”จๆˆทๅช้œ€่ฆไธ‹ๅ‘K * MไธชRQ WQE๏ผŒ่€ŒK่ฟœๅฐไบŽNใ€‚

่ฟ™ไธชKๆ˜ฏๅฏไปฅ็”ฑ็”จๆˆทๆ นๆฎไธšๅŠกๆฅ้…็ฝฎ็š„๏ผŒๅฆ‚ๆžœๅญ˜ๅœจๅคง้‡็š„ๅนถๅ‘ๆŽฅๆ”ถ็š„ๆƒ…ๅ†ต๏ผŒ้‚ฃไนˆๅฐฑๆŠŠK่ฎพ็ฝฎๅคงไธ€็‚น๏ผŒๅฆๅˆ™K่ฎพ็ฝฎๆˆไธชไฝๆ•ฐๅฐฑ่ถณๅคŸๅบ”ไป˜ไธ€่ˆฌ็š„ๆƒ…ๅ†ตไบ†ใ€‚

ๆˆ‘ไปฌไธ€ๅ…ฑ่Š‚็œไบ†๏ผˆN - K) * MไธชRQ WQE๏ผŒRQ WQEๆœฌ่บซๅ…ถๅฎžไธๆ˜ฏๅพˆๅคง๏ผŒๅคง็บฆๅœจๅ‡ ไธชKB็š„ๆ ทๅญ๏ผŒ็œ‹่ตทๆฅๅฅฝๅƒๅ ไธไบ†ๅคšๅฐ‘ๅ†…ๅญ˜ใ€‚ไฝ†ๆ˜ฏๅฆ‚ๅ‰ๆ–‡ๆ‰€่ฏด๏ผŒๅฎž้™…ไธŠ่Š‚็œ็š„่ฟ˜ๆœ‰็”จไบŽๅญ˜ๆ”พๆ•ฐๆฎ็š„ๅ†…ๅญ˜็ฉบ้—ด๏ผŒ่ฟ™ๅฏๆ˜ฏๅพˆๅคงไธ€ๅ—ๅ†…ๅญ˜ไบ†๏ผŒๆˆ‘ไปฌ็”จๅ›พๆฅ่ฏดๆ˜Ž๏ผš

ไธŠๅ›พไธญ็š„SRQไธญๆœ‰ไธคไธชRQ WQE๏ผŒๆˆ‘ไปฌ็œ‹ไธ€ไธ‹RQ WQE็š„ๅ†…ๅฎน๏ผŒๅฎƒไปฌๆ˜ฏ็”ฑๆ•ฐไธชsge๏ผˆScatter/Gather Element๏ผ‰็ป„ๆˆ็š„๏ผŒๆฏไธชsge็”ฑไธ€ไธชๅ†…ๅญ˜ๅœฐๅ€๏ผŒ้•ฟๅบฆๅ’Œ็ง˜้’ฅ็ป„ๆˆใ€‚ๆœ‰ไบ†่ตทๅง‹ๅœฐๅ€ๅ’Œ้•ฟๅบฆ๏ผŒsgeๅฐฑๅฏไปฅๆŒ‡ๅ‘ไธ€ๅ—่ฟž็ปญ็š„ๅ†…ๅญ˜ๅŒบๅŸŸ๏ผŒ้‚ฃไนˆๅคšไธชsgeๅฐฑๅฏไปฅ่กจ็คบๅคšไธชๅฝผๆญค็ฆปๆ•ฃ็š„่ฟž็ปญๅ†…ๅญ˜ๅ—๏ผŒๆˆ‘ไปฌ็งฐๅคšไธชsgeไธบsgl๏ผˆScatter/Gather List๏ผ‰ใ€‚sgeๅœจIB่ฝฏไปถๅ่ฎฎๆ ˆไธญ้šๅค„ๅฏ่ง๏ผˆๅ…ถๅฎžๅœจๆ•ดไธชLinux้ƒฝๅพˆๅธธ่ง๏ผ‰๏ผŒๅฏไปฅ็”จ้žๅธธๅฐ‘็š„็ฉบ้—ด่กจ็คบ้žๅธธๅคง็š„ๅ†…ๅญ˜ๅŒบๅŸŸ๏ผŒIB็š„็”จๆˆท้ƒฝไฝฟ็”จsgeๆฅๆŒ‡ๅฎšๅ‘้€ๅ’ŒๆŽฅๆ”ถๅŒบๅŸŸ็š„ใ€‚

ๅฏไปฅ็ฎ€ๅ•ไผฐ็ฎ—ไธ‹ๆฏไธชsgeๅฏไปฅๆŒ‡ๅ‘ๅคšๅคง็š„ๅ†…ๅญ˜ๅŒบๅŸŸ๏ผŒlengthๆ˜ฏไธ€ไธช32bit็š„ๆ— ็ฌฆๅทๆ•ดๅž‹๏ผŒๅฏไปฅ่กจ็คบ4GB็š„็ฉบ้—ดใ€‚ๅ‡่ฎพไธ€ไธชRQ WQEๆœ€ๅคงๅฏไปฅๅญ˜ๆ”พ256ไธชsge๏ผŒ้‚ฃไนˆไธ€ไธชRQ WQEไธ€ๅ…ฑๅฐฑๆ˜ฏ1TBใ€‚ๅฝ“็„ถๅฎž้™…ไธŠไธๅฏ่ƒฝ่ฟ™ไนˆๅคง๏ผŒ่ฟ™้‡Œๅชๆ˜ฏๆƒณ็›ด่ง‚็š„ๅ‘Š่ฏ‰่ฏป่€…RQ WQE่ƒŒๅŽๅฏ่ƒฝๅ ็”จ็€ๅคšๅคง็š„ๅ†…ๅญ˜็ฉบ้—ดใ€‚

SRQC

ๅณSRQ Contextใ€‚ๅŒQPCไธ€ๆ ท๏ผŒSRQCๆ˜ฏ็”จๆฅๅ‘Š็Ÿฅ็กฌไปถ่ทŸSRQๆœ‰ๅ…ณ็š„ๅฑžๆ€ง็š„๏ผŒๅŒ…ๆ‹ฌๆทฑๅบฆใ€WQEๅคงๅฐ็ญ‰ไฟกๆฏ๏ผŒๆœฌๆ–‡ไธๅ†่ต˜่ฟฐไบ†ใ€‚

SRQN

ๅณSRQ Numberใ€‚ๅŒQPไธ€ๆ ท๏ผŒๆฏไธช่Š‚็‚นไธญๅฏ่ƒฝๅญ˜ๅœจๅคšไธชSRQ๏ผŒไธบไบ†ๆ ‡่ฏ†ๅ’ŒๅŒบๅˆ†่ฟ™ไบ›SRQ๏ผŒๆฏไธชSRQ้ƒฝๆœ‰ไธ€ไธชๅบๅท๏ผŒ็งฐไธบSRQNใ€‚

SRQ็š„PD

ๆˆ‘ไปฌๅœจใ€7. Protection Domainใ€‘ไธญไป‹็ป่ฟ‡Protection Domain็š„ๆฆ‚ๅฟต๏ผŒๅฎƒ็”จๆฅ้š”็ฆปไธๅŒ็š„RDMA่ต„ๆบใ€‚ๆฏไธชSRQ้ƒฝๅฟ…้กปๆŒ‡ๅฎšไธ€ไธช่‡ชๅทฑ็š„PD๏ผŒๅฏไปฅ่ทŸ่‡ชๅทฑๅ…ณ่”็š„QP็š„PD็›ธๅŒ๏ผŒไนŸๅฏไปฅไธๅŒ๏ผ›SRQไน‹้—ดไนŸๅฏไปฅไฝฟ็”จ็›ธๅŒ็š„PDใ€‚

ๅฆ‚ๆžœๅœจไฝฟ็”จSRQ็š„ๆ—ถๅ€™๏ผŒๆ”ถๅˆฐไบ†ๆ•ฐๆฎๅŒ…๏ผŒ้‚ฃไนˆๅชๆœ‰ๅœจ่ฆ่ฎฟ้—ฎ็š„MRๅ’ŒSRQๅค„ไบŽๅŒไธ€ไธชPDไธ‹๏ผŒๆ‰ไผšๆญฃๅธธๆŽฅๆ”ถ่ฟ™ไธชๆ•ฐๆฎๅŒ…๏ผŒๅฆๅˆ™ไผšไบง็”Ÿ็ซ‹ๅณ้”™่ฏฏใ€‚

ๅผ‚ๆญฅไบ‹ไปถ

ๆˆ‘ไปฌๅœจใ€10. Completion Queueใ€‘ไธ€ๆ–‡ไธญไป‹็ป่ฟ‡๏ผŒIBๅ่ฎฎๆ นๆฎ้”™่ฏฏ็š„ไธŠๆŠฅๆ–นๅผๅฐ†้”™่ฏฏ็ฑปๅž‹ๅˆ†ไธบ็ซ‹ๅณ้”™่ฏฏ๏ผŒๅฎŒๆˆ้”™่ฏฏๅ’Œๅผ‚ๆญฅ้”™่ฏฏใ€‚ๅ…ถไธญ็š„ๅผ‚ๆญฅ้”™่ฏฏ็ฑปไผผไบŽไธญๆ–ญ/ไบ‹ไปถ๏ผŒๆ‰€ไปฅๆˆ‘ไปฌๆœ‰ๆ—ถๅ€™ไนŸ็งฐๅ…ถไธบๅผ‚ๆญฅไบ‹ไปถใ€‚ๆฏไธชHCA้ƒฝไผšๆณจๅ†Œไธ€ไธชไบ‹ไปถๅค„็†ๅ‡ฝๆ•ฐไธ“้—จ็”จๆฅๅค„็†ๅผ‚ๆญฅไบ‹ไปถ๏ผŒๆ”ถๅˆฐๅผ‚ๆญฅไบ‹ไปถๅŽ๏ผŒ้ฉฑๅŠจ็จ‹ๅบไผšๅฏนๅ…ถ่ฟ›่กŒๅฟ…่ฆ็š„ๅค„็†ๅ’Œ่ฟ›ไธ€ๆญฅไธŠๆŠฅ็ป™็”จๆˆทใ€‚

ๅ…ณไบŽSRQๆœ‰ไธ€ไธช็‰นๆฎŠ็š„ๅผ‚ๆญฅไบ‹ไปถ๏ผŒ็”จๆฅๅŠๆ—ถ้€š็ŸฅไธŠๅฑ‚็”จๆˆทSRQ็š„็Šถๆ€๏ผŒๅณSRQ Limit Reachedไบ‹ไปถใ€‚

SRQ Limit

SRQๅฏไปฅ่ฎพ็ฝฎไธ€ไธชๆฐด็บฟ/้˜ˆๅ€ผ๏ผŒๅฝ“้˜Ÿๅˆ—ไธญๅ‰ฉไฝ™็š„WQEๆ•ฐ้‡ๅฐไบŽๆฐด็บฟๆ—ถ๏ผŒ่ฟ™ไธชSRQไผšๅฐฑไธŠๆŠฅไธ€ไธชๅผ‚ๆญฅไบ‹ไปถใ€‚ๆ้†’็”จๆˆทโ€œ้˜Ÿๅˆ—ไธญ็š„WQEๅฟซ็”จๅฎŒไบ†๏ผŒ่ฏทไธ‹ๅ‘ๆ›ดๅคšWQEไปฅ้˜ฒๆฒกๆœ‰ๅœฐๆ–นๆŽฅๆ”ถๆ–ฐ็š„ๆ•ฐๆฎโ€ใ€‚่ฟ™ไธชๆฐด็บฟ/้˜ˆๅ€ผๅฐฑ่ขซ็งฐไธบSRQ Limit๏ผŒ่ฟ™ไธชไธŠๆŠฅ็š„ไบ‹ไปถๅฐฑ่ขซ็งฐไธบSRQ Limit Reachedใ€‚

ๅ› ไธบSRQๆ˜ฏๅคšไธชQPๅ…ฑไบซ็š„๏ผŒๆ‰€ไปฅๅฆ‚ๆžœๆทฑๅบฆๆฏ”่พƒๅฐ็š„ๆƒ…ๅ†ตไธ‹๏ผŒๅพˆๆœ‰ๅฏ่ƒฝ็ช็„ถ้‡Œ้ข็š„WQEๅฐฑ็”จๅฎŒไบ†ใ€‚ๆ‰€ไปฅๅ่ฎฎ่ฎพ่ฎกไบ†่ฟ™็งๆœบๅˆถ๏ผŒๆฅไฟ่ฏ็”จๆˆท่ƒฝๅคŸๅŠๆ—ถๅนฒ้ข„WQEไธๅคŸ็š„ๆƒ…ๅ†ตใ€‚

ไธŠๆŠฅๅผ‚ๆญฅไบ‹ไปถไน‹ๅŽ๏ผŒSRQ Limit็š„ๅ€ผไผš่ขซ็กฌไปถ้‡ๆ–ฐ่ฎพ็ฝฎไธบ0๏ผˆๅบ”่ฏฅๆ˜ฏไธบไบ†้˜ฒๆญขไธ€็›ดไธŠๆŠฅๅผ‚ๆญฅไบ‹ไปถ็ป™ไธŠๅฑ‚๏ผ‰ใ€‚ๅฝ“็„ถ็”จๆˆทๅฏไปฅไธไฝฟ็”จ่ฟ™ไธชๆœบๅˆถ๏ผŒๅช้œ€่ฆๅฐ†SRQ Limit็š„ๅ€ผ่ฎพไธบ0ๅณๅฏใ€‚

็”จๆˆทๆŽฅๅฃ

ๆŽงๅˆถ้ข

่ฟ˜ๆ˜ฏ่€ๅ››ๆ ทโ€”โ€”โ€œๅขžใ€ๅˆ ใ€ๆ”นใ€ๆŸฅโ€๏ผš

  • ๅˆ›ๅปบโ€”โ€”Create SRQ

ๅˆ›ๅปบSRQ็š„ๆ—ถๅ€™๏ผŒ่ทŸQPไธ€ๆ ทไผš็”ณ่ฏทๆ‰€ๆœ‰SRQ็›ธๅ…ณ็š„่ฝฏ็กฌไปถ่ต„ๆบ๏ผŒๆฏ”ๅฆ‚้ฉฑๅŠจ็จ‹ๅบไผš็”ณ่ฏทSRQN๏ผŒ็”ณ่ฏทSRQC็š„็ฉบ้—ดๅนถๅ‘ๅ…ถไธญๅกซๅ†™้…็ฝฎใ€‚ๅˆ›ๅปบSRQๆ—ถ่ฟ˜ๅฟ…้กปๆŒ‡ๅฎšๆฏไธชSRQ็š„ๆทฑๅบฆ๏ผˆ่ƒฝๅญ˜ๆ”พๅคšๅฐ‘WQE๏ผ‰ไปฅๅŠๆฏไธชWQE็š„ๆœ€ๅคงsgeๆ•ฐ้‡ใ€‚

  • ้”€ๆฏโ€”โ€”Destroy SRQ

้”€ๆฏSRQ็š„ๆ‰€ๆœ‰็›ธๅ…ณ่ฝฏ็กฌไปถ่ต„ๆบใ€‚

  • ไฟฎๆ”นโ€”โ€”Modify SRQ

้™คไบ†SRQๆทฑๅบฆ็ญ‰ๅฑžๆ€งๅค–๏ผŒSRQ Limit็š„ๅ€ผไนŸๆ˜ฏ้€š่ฟ‡่ฟ™ไธชๆŽฅๅฃ่ฎพ็ฝฎ็š„ใ€‚ๅ› ไธบๆฏๆฌกไบง็”ŸSRQ Limit Reachedไบ‹ไปถไน‹ๅŽ๏ผŒๆฐด็บฟ็š„ๅ€ผ้ƒฝไผš่ขซๆธ…้›ถ๏ผŒๆ‰€ไปฅๆฏๆฌก้ƒฝ้œ€่ฆ็”จๆˆท่ฐƒ็”จModify SRQ้‡ๆ–ฐ่ฎพ็ฝฎๆฐด็บฟใ€‚

  • ๆŸฅ่ฏขโ€”โ€”Query SRQ

้€šๅธธๆ˜ฏ็”จๆฅๆŸฅ่ฏขๆฐด็บฟ็š„้…็ฝฎ็š„ใ€‚

ๆ•ฐๆฎ้ข

Post SRQ Receive

่ทŸPost Receiveไธ€ๆ ท๏ผŒๅฐฑๆ˜ฏๅ‘SRQไธญไธ‹ๅ‘ๆŽฅๆ”ถWQE๏ผŒ้‡Œ้ขๅŒ…ๅซไบ†ไฝœไธบๆŽฅๆ”ถ็ผ“ๅ†ฒๅŒบ็š„ๅ†…ๅญ˜ๅ—็š„ไฟกๆฏใ€‚้œ€่ฆๆณจๆ„็š„ๆ˜ฏ๏ผŒไธป่ฏญๆ˜ฏSRQ๏ผŒไธŽQPๆฒกๆœ‰ไปปไฝ•ๅ…ณ็ณป๏ผŒ็Žฐๅœจ็”จๆˆทๆ˜ฏไธๅ…ณๅฟƒ่ฟ™ไธชSRQ่ขซๅ“ชไบ›QPๅ…ณ่”็š„ใ€‚

SRQๅ’ŒRQ็š„ๅŒบๅˆซ

ไปŽๅŠŸ่ƒฝไธŠๆฅ่ฏด๏ผŒSRQๅ’ŒRQไธ€ๆ ท้ƒฝๆ˜ฏ็”จๆฅๅ‚จๅญ˜ๆŽฅๆ”ถไปปๅŠกไนฆ็š„๏ผŒไฝ†ๆ˜ฏ็”ฑไบŽSRQ็š„ๅ…ฑไบซๆ€ง๏ผŒๆ‰€ไปฅๅ…ถๅ’ŒRQๆœ‰ไธ€ไบ›ๅทฎๅผ‚ใ€‚

็Šถๆ€ๆœบ

ๆˆ‘ไปฌๅœจใ€9. Queue Pairใ€‘ไธญไป‹็ป่ฟ‡๏ผŒQPๆœ‰็€ๅคๆ‚็š„็Šถๆ€ๆœบ๏ผŒไธๅŒ็š„็Šถๆ€ไธ‹QP็š„ๆ”ถๅ‘่ƒฝๅŠ›ๅญ˜ๅœจๅทฎๅผ‚ใ€‚่€ŒSRQๅชๆœ‰้ž้”™่ฏฏๅ’Œ้”™่ฏฏไธค็ง็Šถๆ€๏ผš

ๆ— ่ฎบๆ˜ฏๅ“ช็ง็Šถๆ€ไธ‹๏ผŒ็”จๆˆท้ƒฝๅฏไปฅๅ‘SRQไธญไธ‹ๅ‘WQE๏ผŒไฝ†ๆ˜ฏๅœจ้”™่ฏฏ็Šถๆ€ไธ‹๏ผŒ็›ธๅ…ณ่”็š„QPไธ่ƒฝไปŽ่ฟ™ไธชSRQไธญ่Žทๅพ—ๆ”ถๅˆฐ็š„ๆ•ฐๆฎใ€‚ๅฆๅค–ๅœจ้”™่ฏฏ็Šถๆ€ไธ‹๏ผŒ็”จๆˆทไนŸๆ— ๆณ•ๆŸฅ่ฏขๅ’Œไฟฎๆ”นSRQ็š„ๅฑžๆ€งใ€‚

QPๅค„ไบŽ้”™่ฏฏ็Šถๆ€ๆ—ถ๏ผŒๅฏไปฅ้€š่ฟ‡Modify QPๆฅไฝฟๅ…ถๅ›žๅˆฐRESET็Šถๆ€๏ผŒไฝ†ๆ˜ฏๅฏนSRQๆฅ่ฏด๏ผŒๅช่ƒฝ้€š่ฟ‡้”€ๆฏๅฎƒๆฅ้€€ๅ‡บ้”™่ฏฏ็Šถๆ€ใ€‚

ๆŽฅๆ”ถๆต็จ‹

ๅฏนไบŽไธ€ไธชQPๆฅ่ฏด๏ผŒRQๅ’ŒSRQไธ่ƒฝๅŒๆ—ถไฝฟ็”จ๏ผŒไธค่€…้œ€้€‰ๅ…ถไธ€๏ผŒๅฆ‚ๆžœๅฏนไธ€ไธชๅทฒ็ปๅ…ณ่”SRQ็š„QP็š„RQไธ‹ๅ‘WQE๏ผŒ้‚ฃไนˆไผš่ฟ”ๅ›žไธ€ไธช็ซ‹ๅณ้”™่ฏฏใ€‚

ไธ‹้ขๆˆ‘ไปฌๆฅๅฏนๆฏ”็œ‹ไธ€ไธ‹SRQๅ’ŒRQ็š„ๆŽฅๆ”ถๆต็จ‹ใ€‚ๆœฌๅฐ็ป“็š„ๅ†…ๅฎนๆ˜ฏๆœฌๆ–‡็š„้‡็‚น๏ผŒ็›ธไฟก่ฏป่€…็œ‹่ฟ‡ไน‹ๅŽ๏ผŒๅฐฑๅฏนSRQ็š„ๆœบๅˆถๆœ‰ๆฏ”่พƒๅฎŒๆ•ด็š„ไบ†่งฃไบ†ใ€‚

RQ็š„ๆŽฅๆ”ถๆต็จ‹

้ฆ–ๅ…ˆ๏ผŒๆˆ‘ไปฌ้‡ๆธฉไธ€ไธ‹ๆ™ฎ้€šRQ็š„ๆŽฅๆ”ถๆต็จ‹๏ผˆ็ป“ๅˆๅ‘้€็ซฏ็š„ๅฎŒๆ•ดๆต็จ‹่ฏท้˜…่ฏปใ€4. ๆ“ไฝœ็ฑปๅž‹ใ€‘ไธ€ๆ–‡๏ผ‰๏ผš

0. ๅˆ›ๅปบQPใ€‚

  1. ้€š่ฟ‡Post RecvๆŽฅๅฃ๏ผŒ็”จๆˆทๅˆ†ๅˆซๅ‘QP2ๅ’ŒQP3็š„RQไธ‹ๅ‘ๆŽฅๆ”ถWQE๏ผŒWQEไธญๅŒ…ๅซๆŽฅๆ”ถๅˆฐๆ•ฐๆฎๅŽๆ”พๅˆฐๅ“ชๅ—ๅ†…ๅญ˜ๅŒบๅŸŸ็š„ไฟกๆฏใ€‚

2. ็กฌไปถๆ”ถๅˆฐๆ•ฐๆฎใ€‚

3. ็กฌไปถๅ‘็Žฐๆ˜ฏๅ‘็ป™QP3็š„๏ผŒ้‚ฃไนˆไปŽQP3็š„RQไธญๅ–ๅ‡บWQE1๏ผŒๅฐ†ๆŽฅๆ”ถๅˆฐ็š„ๆ•ฐๆฎๆ”พๅˆฐWQE1ๆŒ‡ๅฎš็š„ๅ†…ๅญ˜ๅŒบๅŸŸใ€‚

4. ็กฌไปถๅฎŒๆˆๆ•ฐๆฎๅญ˜ๆ”พๅŽ๏ผŒๅ‘QP3็š„RQๅ…ณ่”็š„CQ3ไบง็”Ÿไธ€ไธชCQE๏ผŒไธŠๆŠฅไปปๅŠกๅฎŒๆˆไฟกๆฏใ€‚

5. ็”จๆˆทไปŽCQ3ไธญๅ–ๅ‡บWC๏ผˆCQE๏ผ‰๏ผŒ็„ถๅŽไปŽๆŒ‡ๅฎšๅ†…ๅญ˜ๅŒบๅŸŸๅ–่ตฐๆ•ฐๆฎใ€‚

6. ็กฌไปถๆ”ถๅˆฐๆ•ฐๆฎใ€‚

7. ็กฌไปถๅ‘็Žฐๆ˜ฏๅ‘้€็ป™QP2็š„๏ผŒ้‚ฃไนˆไปŽQP2็š„RQไธญๅ–ๅ‡บWQE1๏ผŒๅฐ†ๆŽฅๆ”ถๅˆฐ็š„ๆ•ฐๆฎๆ”พๅˆฐWQE1ๆŒ‡ๅฎš็š„ๅ†…ๅญ˜ๅŒบๅŸŸใ€‚

8. ็กฌไปถๅฎŒๆˆๆ•ฐๆฎๅญ˜ๆ”พๅŽ๏ผŒๅ‘QP2็š„RQๅ…ณ่”็š„CQ2ไบง็”Ÿไธ€ไธชCQE๏ผŒไธŠๆŠฅไปปๅŠกๅฎŒๆˆไฟกๆฏใ€‚

9. ็”จๆˆทไปŽCQ2ไธญๅ–ๅ‡บWC๏ผˆCQE๏ผ‰๏ผŒ็„ถๅŽไปŽๆŒ‡ๅฎšๅ†…ๅญ˜ๅŒบๅŸŸๅ–่ตฐๆ•ฐๆฎใ€‚

SRQ็š„ๆŽฅๆ”ถๆต็จ‹

่€ŒSRQ็š„ๆŽฅๆ”ถๆต็จ‹ๆœ‰ไธ€ไบ›ๅŒบๅˆซ๏ผš

0. ๅˆ›ๅปบSRQ1๏ผŒๅนถๅˆ›ๅปบQP2ๅ’ŒQP3๏ผŒ้ƒฝๅ…ณ่”ๅˆฐSRQ1ไธŠใ€‚

  1. ้€š่ฟ‡Post SRQ RecvๆŽฅๅฃ๏ผŒ็”จๆˆทๅ‘SRQ1ไธญไธ‹ๅ‘ไธคไธชๆŽฅๆ”ถWQE๏ผŒWQEไธญๅŒ…ๅซๆŽฅๆ”ถๅˆฐๆ•ฐๆฎๅŽๆ”พๅˆฐๅ“ชๅ—ๅ†…ๅญ˜ๅŒบๅŸŸ็š„ไฟกๆฏใ€‚

2. ็กฌไปถๆ”ถๅˆฐๆ•ฐๆฎใ€‚

3. ็กฌไปถๅ‘็Žฐๆ˜ฏๅ‘็ป™QP3็š„๏ผŒไปŽSRQ1ไธญๅ–ๅ‡บ็ฌฌไธ€ไธชWQE๏ผˆ็Žฐๅœจๆ˜ฏWQE1๏ผ‰๏ผŒๆ นๆฎWQEๅ†…ๅฎนๅญ˜ๆ”พๆ”ถๅˆฐ็š„ๆ•ฐๆฎใ€‚

SRQไธญ็š„ๆฏไธชWQEๆ˜ฏโ€œๆ— ไธป็š„โ€œ๏ผŒไธๅ…ณ่”ๅˆฐไปปไฝ•ไธ€ไธชQP๏ผŒ็กฌไปถๆŒ‰้˜Ÿๅˆ—้กบๅบไพๆฌกๅ–ๅ‡บWQEๅฐฑๆŠŠๆ•ฐๆฎๆ”พๅˆฐ้‡Œ้ขไบ†ใ€‚

4. ็กฌไปถๅ‘็ŽฐQP3็š„RQๅ…ณ่”็š„CQๆ˜ฏCQ3๏ผŒๆ‰€ไปฅๅ‘ๅ…ถไธญไบง็”Ÿไธ€ไธชCQEใ€‚

5. ็”จๆˆทไปŽCQ3ไธญๅ–ๅ‡บCQE๏ผŒไปŽๆŒ‡ๅฎšๅ†…ๅญ˜ๅŒบๅŸŸๅ–่ตฐๆ•ฐๆฎใ€‚

็ป†ๅฟƒๅœฐ่ฏป่€…ๅฏ่ƒฝไผš้—ฎ๏ผŒ็”จๆˆทไธ‹ๅ‘WRๆ—ถ๏ผŒๆฏไธชWR้ƒฝๆŒ‡ๅฎšไบ†ไธ€ไบ›ๆœชๆฅ็”จๆฅๅญ˜ๆ”พๆ•ฐๆฎ็š„ๅ†…ๅญ˜ๅŒบๅŸŸใ€‚ไฝ†ๆ˜ฏSRQๆ˜ฏไธ€ไธชๆฑ ๅญ๏ผŒ้‡Œ้ขๆฏไธชWQE้ƒฝๆŒ‡ๅ‘ไบ†ไธๅŒ็š„่‹ฅๅนฒๆฎตๅ†…ๅญ˜ๅŒบๅŸŸใ€‚็”จๆˆทๆ”ถๅˆฐๆŸไธชQPๅฏนๅบ”็š„CQไธญ็š„WCๅŽๅฆ‚ไฝ•็Ÿฅ้“ๆŽฅๆ”ถๅˆฐ็š„ๆ•ฐๆฎๅญ˜ๆ”พๅˆฐๅ“ช้‡Œไบ†ๅ‘ข๏ผŸ WCไธญๅ…ถๅฎžๆœ‰wr_idไฟกๆฏ๏ผŒๅ‘Š็Ÿฅ็”จๆˆทๆ•ฐๆฎๆ”พๅˆฐๅ“ชไธชWR๏ผˆWQE๏ผ‰ๆŒ‡ๅฎš็š„ๅ†…ๅญ˜ๅŒบๅŸŸไบ†๏ผŒๆ—ข็„ถWRๆ˜ฏ็”จๆˆทไธ‹ๅ‘็š„๏ผŒ็”จๆˆท่‡ช็„ถ็Ÿฅ้“ๅ…ถๆŒ‡ๅ‘็š„ๅ…ทไฝ“ไฝ็ฝฎใ€‚

6. ็กฌไปถๆ”ถๅˆฐๆ•ฐๆฎใ€‚

7. ็กฌไปถๅ‘็Žฐๆ˜ฏๅ‘็ป™QP2็š„๏ผŒไปŽSRQ1ไธญๅ–ๅ‡บ็ฌฌไธ€ไธชWQE๏ผˆ็Žฐๅœจๆ˜ฏWQE2๏ผ‰๏ผŒๆ นๆฎWQEๅ†…ๅฎนๅญ˜ๆ”พๆ”ถๅˆฐ็š„ๆ•ฐๆฎใ€‚

8. ็กฌไปถๅ‘็ŽฐQP2็š„RQๅ…ณ่”็š„CQๆ˜ฏCQ2๏ผŒๆ‰€ไปฅๅ‘ๅ…ถไธญไบง็”Ÿไธ€ไธชCQEใ€‚

9. ็”จๆˆทไปŽCQ2ไธญๅ–ๅ‡บCQE๏ผŒไปŽๆŒ‡ๅฎšๅ†…ๅญ˜ๅŒบๅŸŸๅ–่ตฐๆ•ฐๆฎใ€‚

ๆ€ป็ป“

ๆœฌๆ–‡้ฆ–ๅ…ˆไป‹็ปไบ†SRQ็š„ๅŸบๆœฌๆฆ‚ๅฟต๏ผŒ็„ถๅŽๆ˜ฏๅ…ถ่ฎพ่ฎกๅˆ่กทใ€็›ธๅ…ณๆœบๅˆถๅ’Œ็”จๆˆทๆŽฅๅฃ๏ผŒๆœ€ๅŽๅฏนๆฏ”RQๆ่ฟฐไบ†SRQ็š„ๆŽฅๆ”ถๆต็จ‹ใ€‚ๅœจๅฎž้™…ไธšๅŠกไธญ๏ผŒSRQ็š„ไฝฟ็”จ็Ž‡่ฟ˜ๆ˜ฏ่›ฎ้ซ˜็š„๏ผŒๅธŒๆœ›่ฏป่€…่ƒฝๅคŸๆทฑๅ…ฅ็†่งฃใ€‚

ๅฐฑๅ†™ๅˆฐ่ฟ™้‡Œๅง๏ผŒๆ„Ÿ่ฐข้˜…่ฏปใ€‚ไธ‹ไธ€็ฏ‡ๆˆ‘ๅฐ†็ป™ๅคงๅฎถไป‹็ปไธ‹Memeory Windowใ€‚

ๅ่ฎฎ็›ธๅ…ณ็ซ ่Š‚

10.2.9 SRQ็š„่ฎพ่ฎกๆ€ๆƒณไปฅๅŠ็›ธๅ…ณๆ“ไฝœ

10.2.3 SRQๅ’ŒQP็š„PD

10.8.2 ๅ…ณ่”SRQ็š„QPๅ’Œไธไฝฟ็”จSRQ็š„QP็š„ๅ…ณ็ณป

10.8.5 SRQ็›ธๅ…ณ็š„่ฟ”ๅ›žWC

11.5.2.4 ๅผ‚ๆญฅไบ‹ไปถ

ๅ…ถไป–ๅ‚่€ƒ่ต„ๆ–™

[1] Linux Kernel Networking - Implement and Theory. Chapter 13. Shared Receive Queue

Last updated