Deadline scheduler
ડેડલાઇન શેડ્યૂલર એ લિનક્સ કર્નલ માટે I/O શેડ્યૂલર છે જે 2002માં જેન્સ એક્સબો દ્વારા લખવામાં આવ્યું હતું. ઝાંખી ડેડલાઇન શેડ્યૂલરનો મુખ્ય ધ્યેય વિનંતી માટે સેવા શરૂ કરવાના સમયની બાંયધરી આપવાનો છે. તે વિનંતીઓના ભૂખમરાને રોકવા માટે તમામ I/O કામગીરીઓ પર સમયમર્યાદા લાદીને આમ કરે છે. તે સૉર્ટ કરેલી કતારો (વાંચવા અને લખવા બંને) ઉપરાંત બે સમયમર્યાદાની કતારો પણ જાળવે છે. સમયમર્યાદા કતારો મૂળભૂત રીતે તેમની સમયમર્યાદા (સમાપ્તિ સમય) દ્વારા સૉર્ટ કરવામાં આવે છે, જ્યારે સૉર્ટ કરેલી કતારો સેક્ટર નંબર દ્વારા સૉર્ટ કરવામાં આવે છે. આગામી વિનંતી પૂરી પાડતા પહેલા, સમયમર્યાદા સુનિશ્ચિત કરનાર નક્કી કરે છે કે કઈ કતારનો ઉપયોગ કરવો. વાંચવાની કતારોને વધુ પ્રાથમિકતા આપવામાં આવે છે, કારણ કે પ્રક્રિયાઓ સામાન્ય રીતે વાંચવાની કામગીરીને અવરોધે છે. આગળ, ડેડલાઇન શેડ્યૂલર તપાસે છે કે ડેડલાઇન કતારમાં પ્રથમ વિનંતીની સમયસીમા સમાપ્ત થઈ ગઈ છે કે નહીં. નહિંતર, શેડ્યૂલર સૉર્ટ કરેલી કતારમાંથી વિનંતીઓના સમૂહને સેવા આપે છે. બંને કિસ્સાઓમાં, શેડ્યૂલર સૉર્ટ કરેલી કતારમાં પસંદ કરેલી વિનંતીને અનુસરીને વિનંતીઓનો સમૂહ પણ પ્રદાન કરે છે. મૂળભૂત રીતે, વાંચન વિનંતીઓનો સમાપ્તિ સમય 500 એમએસ હોય છે, લેખન વિનંતીઓ 5 સેકન્ડમાં સમાપ્ત થાય છે. શેડ્યૂલરનું પ્રારંભિક સંસ્કરણ જાન્યુઆરી 2002માં જેન્સ એક્સબો દ્વારા પ્રકાશિત કરવામાં આવ્યું હતું. માપન દર્શાવે છે કે સમયમર્યાદા I/O શેડ્યૂલર ચોક્કસ મલ્ટીથ્રેડેડ વર્કલોડ માટે CFQ I/O શેડ્યૂલરને પાછળ છોડી દે છે. sysfs ટ્યુનબલ્સ ફિફો _ બેચ (પૂર્ણાંક) સમયમર્યાદા "બૅચેસ" ની વિભાવના દ્વારા I/O ઓપરેશન્સ (I. O. P.) ને અમલમાં મૂકે છે, જે ક્ષેત્રની વધતી સંખ્યાના સંદર્ભમાં આદેશિત કામગીરીના સમૂહ છે. આ ટ્યુનબલ નક્કી કરે છે કે ડિસ્ક પર વિનંતીઓ કતારમાં મૂકવામાં આવે તે પહેલાં બેચ કેટલી મોટી હોવી જોઈએ (હાલમાં બનાવવામાં આવેલી બેચની સમાપ્તિ સિવાય). નાની બૅચેસ નવી વિનંતીઓ ઝડપથી ચલાવવામાં આવે તેની ખાતરી કરીને વિલંબ ઘટાડી શકે છે (સંભવિત રીતે વધુ વિનંતીઓ આવવાની રાહ જોવાને બદલે), પરંતુ ડ્રાઇવ હેડની એકંદર હિલચાલને વધારીને એકંદર થ્રુપુટને ઘટાડી શકે છે (કારણ કે સિક્વન્સિંગ તેમની વચ્ચે નહીં પણ બેચમાં થાય છે). વધુમાં, જો આઇ. ઓ. પી. ની સંખ્યા પૂરતી વધારે હોય તો બૅચો કોઈપણ રીતે સમયસર અમલમાં મૂકવામાં આવશે. રીડ _ એક્સપાયર (પૂર્ણાંક) 'રીડ _ એક્સપાયર' સમય મિલિસેકન્ડ્સમાં મહત્તમ સમય છે, જેના પછી રીડ 'એક્સપાયર' ગણવામાં આવે છે. આને દૂધના કાર્ટન પરની સમાપ્તિ તારીખની જેમ વિચારો. સમાપ્તિની તારીખ પહેલાં દૂધનો શ્રેષ્ઠ ઉપયોગ થાય છે. ડેડલાઇન શેડ્યૂલર સાથે પણ એવું જ છે. તે ખાતરી કરવાનો પ્રયાસ કરશે નહીં કે તમામ IO તેની સમાપ્તિ તારીખ પહેલાં જારી કરવામાં આવે. જો કે, જો આઈ. ઓ. ની મુદત પૂરી થઈ ગઈ હોય, તો તેને અગ્રતામાં ઉછાળો મળે છે. ચેતવણીઓ સાથે. વાંચવાની સમાપ્તિ કતાર ત્યારે જ તપાસવામાં આવે છે જ્યારે સમયમર્યાદા સુનિશ્ચિત કરનાર વાંચવાની કતારનું ફરીથી મૂલ્યાંકન કરે છે. રીડ્સ માટે આનો અર્થ એ છે કે દરેક વખતે સ્ટ્રીમિંગ io સિવાય સૉર્ટ કરેલ રીડ મોકલવામાં આવે છે. જ્યારે શેડ્યૂલર વાંચન કતારમાંથી io સ્ટ્રીમિંગ કરી રહ્યું હોય, ત્યારે વાંચનની સમયસીમા સમાપ્ત થઈ ગઈ હોય તેનું મૂલ્યાંકન કરવામાં આવતું નથી. વાંચવાની કતારનું પુનઃમૂલ્યાંકન કરતી વખતે, તર્ક એ છે કે સમાપ્ત થયેલ વાંચન માટે તપાસ કરો (ફીફો [સમય આદેશિત] કતારના માથા પર જુઓ) કેશે કરેલ વાંચન નિર્દેશક માન્ય છે કે કેમ તે તપાસો (તેથી જો સ્ટ્રીમિંગ ન હોય તો પણ, કેશ કરેલ નિર્દેશક હજુ પણ પ્રાધાન્ય લે છે જેથી સૉર્ટ કરેલ કતારને સ્વીપમાં ટીપથી પૂંછડી તરફ ફેરવવામાં આવે છે) સૉર્ટ કરેલ કતારમાંથી પ્રથમ વાંચન પસંદ કરો (બીજી સ્વીપ માટે ફરીથી ટીપ પર પ્રારંભ કરો) જો ત્યાં સમાપ્ત થયેલ વાંચન હોય, તો પછી પ્રથમને ફીફોમાંથી ખેંચવામાં આવે છે. નોંધ લો કે આ એક્સપાયર થયેલ રીડ તો રીડ સૉર્ટ ઓર્ડરિંગ માટેનું નવું નેક્સસ છે. કેશ કરેલ આગામી નિર્દેશક આ સમયસમાપ્તિ પછી સૉર્ટ કતારમાંથી આગામી io તરફ નિર્દેશ કરવા માટે સુયોજિત કરવામાં આવશે. નોંધવા જેવી બાબત એ છે કે એલ્ગોરિધમ માત્ર એકવાર તેમની સમાપ્તિ તારીખ વટાવી જાય તે પછી તમામ સમાપ્ત થયેલ io ને એક્ઝિક્યુટ કરતું નથી. આ સમયસમાપ્ત વાંચન કતારને ફરીથી તપાસતા પહેલા 'રાઈટ _ સ્ટાર્વ્ડ' રીડ્સને એકસાથે સૉર્ટ કરીને કેટલાક વાજબી પ્રદર્શનને જાળવવાની મંજૂરી આપે છે. તેથી, સમાપ્ત થયેલ io વાંચવા વચ્ચે કરી શકાય તેવી io ની મહત્તમ સંખ્યા 2 * 'ફિફો _ બેચ' * 'રાઈટ્સ _ સ્ટાર્વેડ' છે. 'ફીફો _ બેચ' સ્ટ્રીમિંગનો એક સમૂહ પ્રથમ સમાપ્ત થયેલ રીડ io પછી વાંચે છે અને જો આ સ્ટ્રીમ લેખિત ભૂખ્યા સ્થિતિનું કારણ બને છે, તો સંભવતઃ અન્ય 'ફીફો _ બેચ' સ્ટ્રીમિંગ લખે છે. આ વધુ ખરાબ સ્થિતિ છે, જે પછી વાંચવાની સમયસીમા સમાપ્ત થઈ ગયેલી કતારનું ફરીથી મૂલ્યાંકન કરવામાં આવશે. શ્રેષ્ઠ રીતે, સમાપ્ત થયેલી વાંચન કતારને છોડવામાં આવે તે પહેલાં સળંગ 'રાઈટ _ સ્ટાર્વ્ડ' વખત મૂલ્યાંકન કરવામાં આવશે કારણ કે લેખન કતારનો ઉપયોગ કરવામાં આવશે. રાઈટ _ એક્સપાયર (પૂર્ણાંક) એ રીડ _ એક્સપાયર માટે સમાન છે પરંતુ રાઈટ ઓપરેશન્સ માટે (રીડ્સથી અલગ બેચમાં જૂથબદ્ધ). અક્ષરો (પૂર્ણાંક) અગાઉ જણાવ્યા મુજબ, સમયમર્યાદા લખવા કરતાં વાંચવાનું પસંદ કરે છે. પરિણામે, આ એવી પરિસ્થિતિઓ તરફ દોરી શકે છે જ્યાં કામગીરીઓ ચલાવવામાં આવે છે તે લગભગ સંપૂર્ણ રીતે વાંચવામાં આવે છે. આ એક મહત્વપૂર્ણ ટ્યુનબલ બની જાય છે કારણ કે લિખેં _ એક્સપાયર વિસ્તરેલ છે અથવા એકંદર બેન્ડવિડ્થ સંતૃપ્તિ સુધી પહોંચે છે. આને ઘટાડવાથી વાંચન કામગીરીના ભોગે લખવા માટે (પ્રમાણમાં કહીએ તો) વધુ બેન્ડવિડ્થ મળે છે. જો એપ્લિકેશન વર્કલોડ, જોકે, માત્ર પ્રસંગોપાત લેખન સાથે વાંચન-ભારે (ઉદાહરણ તરીકે મોટાભાગના HTTP અથવા ડિરેક્ટરી સર્વર્સ) હોય, તો સરેરાશ IOP ની વિલંબિતતામાં ઘટાડો આને વધારીને પ્રાપ્ત કરી શકાય છે (જેથી લેખન જૂથને ડિસ્ક પર કતારમાં મૂકતા પહેલા વધુ વાંચન કરવું આવશ્યક છે). ફ્રન્ટ _ મર્જ (બૂલ ઇન્ટિજર) એ "ફ્રન્ટ મર્જ" એ એક ઓપરેશન છે જ્યાં I/O શેડ્યૂલર, નાની વિનંતીઓને ઓછી (મોટી) કામગીરીમાં સંક્ષિપ્ત (અથવા "મર્જ") કરવા માંગે છે, તે નવી કામગીરી કરશે અને પછી સક્રિય બેચની તપાસ કરશે અને કામગીરીને શોધવાનો પ્રયાસ કરશે જ્યાં પ્રારંભિક ક્ષેત્ર સમાન છે અથવા અન્ય કામગીરીના પ્રારંભિક ક્ષેત્ર પછી તરત જ. "બેક મર્જ" એ તેનાથી વિપરીત છે, જ્યાં સક્રિય બેચમાં અંતના ક્ષેત્રોને એવા ક્ષેત્રો માટે શોધવામાં આવે છે જે કાં તો સમાન હોય અથવા વર્તમાન કામગીરીના શરૂઆતના ક્ષેત્રો પછી તરત જ હોય. મર્જ કરવાથી કામગીરીને વર્તમાન બેચમાંથી સક્રિય બેચમાં ફેરવવામાં આવે છે, થ્રુપુટ વધારવા માટે "નિષ્પક્ષતા" ઘટે છે. જે રીતે ફાઇલોને સામાન્ય રીતે બહાર પાડવામાં આવે છે તેના કારણે, પાછળના વિલીનીકરણ આગળના વિલીનીકરણ કરતાં વધુ સામાન્ય છે. કેટલાક કામના ભારણ માટે, તમે એ પણ જાણી શકો છો કે મર્જ વિનંતીઓને આગળ વધારવાનો પ્રયાસ કરવામાં કોઈપણ સમયે ખર્ચ કરવો એ સમયનો બગાડ છે. ફ્રન્ટ _ મર્જને 0 પર સુયોજિત કરવાથી આ કાર્યક્ષમતાને નિષ્ક્રિય કરે છે. કેશ કરેલા છેલ્લા મર્જ સંકેતને કારણે ફ્રન્ટ મર્જ હજી પણ થઈ શકે છે, પરંતુ તે મૂળભૂત રીતે શૂન્ય કિંમતે આવે છે, તે હજુ પણ કરવામાં આવે છે. જ્યારે I/O શેડ્યૂલર મર્જિંગ ફંક્શન કહેવાય છે ત્યારે આ બુલિયન ફ્રન્ટ સેક્ટર લુકઅપને નિષ્ક્રિય કરે છે. ડિસ્ક મર્જનો સરવાળો પ્રતિ-બ્લોક ઉપકરણ/પ્રોસી/ડિસ્કસ્ટેટ્સમાં નોંધવામાં આવે છે. અન્ય I/O શેડ્યૂલર CFQ શેડ્યૂલર પૂર્વનિર્ધારિત શેડ્યૂલર Noop શેડ્યૂલર સંદર્ભો ડિસ્ક શેડ્યૂલિંગ અલ્ગોરિધમ્સ