 بسم اللہ الرحمن الرحیم آج ہم موڈیول 174 دیسکرس کریں گے موڈیول 174 ہے about locking performance اب کئی کسم کی locking ٹکنیکس بھی دیسکرس کر چکے ہیں اور ان کو اپٹمائز کرنے کے لیے بھی ہم various ٹکنیکس دیسکرس کر چکے ہیں تو ہم نے دیکھا ہے کہ کسی کی performance اچھی ہے کسی کی performance خراب ہے کسی کی performance اچھی ہے اگر کم process ہیں لیکن اگر زادہ ہوتے ہیں نمبر of processes یا نمبر of processors تو اس کے اندر اس کی performance جو ہے وہ degrade ہونی شروع ہو جاتی ہے تو اس کے اندر کئی ساری options ہے ہم کامبینیشنز جو ہم نے دیسکرس کیا ان کامبینیشنز کیا کہاں پر ایک سمبری سی جو ہے کہاں نے دیسکرس کرتے ہیں کئی سارے ایسے فکٹرز ہوتے ہیں ہارڈویر کے ساتھویر کے اور external factors جس کی وجہ سے یا program behavior کے فکٹرز ہوتے ہیں جس کی وجہ سے کبھی آپ کو اچھی performance ملتی ہے کبھی آپ کو اچھی performance نہیں ملتی ہے ایک combination کبھی اچھا performance کا رہا ہے ایک combination آپ کو لکھتا ہے کہ کبھی اچھا نہیں performance کا رہا factors کے ہی سارے ہیں لیکن ہم اس کی ایک generalization جو ہے وہ آپ کو generalized picture جو ہے وہ دینے کی پوشکہ ہے تو سب سے اگر ہم fastest دیکھیں تو of course جب آپ concurrency کا استعمال کریں اور کسی کسم کی بھی synchronization in force نہیں کرتے تو وہاں پہ ہمیں best performance ملتی یعنی کہ ہم نے ایک programنایا تھا جس نے کئی ساری threads قرآن کیا تھا اور بیچ میں کسی بھی synchronization object کو ہم نے use نہیں کیا نام نے time of force use کی نام نے mutual mutexes use کی ہم نے کوئی بھی کسی بھی نام نے logs use کیا srw logs کچھ بھی نہیں use کیا ہم نے کسی کسم کی mutual exclusion in force نہیں کی synchronization in force نہیں کی تو وہاں پہ of course ہمیں بڑا اچھا time ملتی ہے لیکن of course صرف posture execute کرنا ہمارا مقصد نہیں ہے ایکرسی بھی ہونے چاہیے to make sure کہ آپ کے پاس جو اندر results آرہے ہیں وہ accurate ہیں آپ کو mutual exclusion in force کرنی بڑا اب جو mutual exclusion in force کرتے ہیں تو ہمیں دیکھا کہ interlock functions یہ fastest perform کرے اور اس کے بعد ہمیں srw logs کی performance ہے وہ ملتی ہے وہ بھی اچھا perform کرتے ہیں اگر ان کو worker threads کے ساتھ use کیا جائے اور srw log بھی اچھا perform کرتے ہیں جب mix ہو یعنی کہ اس کے اندر ہمیں پتا ہے کہ دو طائیب کی ایک exclusive کی اور ایک share کی تو جہاں کہیں right ہو رہا ہے وہاں پہ ہم exclusive استعمال کریں جان پی read ہو رہا ہے وہاں پہ ہم share دستعمال کریں share locks پھر اس سے تھوڑیسی کام ہمیں performance ملتی یعنی ہمیں یہ پتا لگا ہے کہ worker thread کی وضہ سے srw locks کو آپ مزید optimize کرسے تو یہ تکنیق جو ہے worker threads کی یہ srw locks کی optimization میں ہمیں help کر دوسرا ہم دیکھ سکتے ہیں کہ srw locks کو اگر ہم conventional threading کے تکنیق سے use کریں ہم thread pools کو نہ استعمال کریں ہم conventional threading کی تکنیق use کرتے بھی srw locks کو استعمال کریں تو تھوڑیسی اس کی performance جو ہے وہ degrade ہو جاتی تھوڑیسی اس کی performance جو ہے وہ کام ہو جاتی as compared to worker thread جو ہم thread pools کو استعمال کریں اور پھر ہم نے دیکھا تھا کہ of course critical sections جو ہے وہ اتنا اچھا perform نہیں کر سکتے especially جب آپ کے پاس بہت زادہ threads ہوں تو critical section تھوڑا بہتر perform کرتے ہیں اگر ہم spin counts کے ساتھ ان کو use کریں so spin counts کے استعمال کے ساتھ اس کی جو performance ہے وہ تھوڑی optimize ہو جاتی ہے اور worst performance جو ہے وہ ہم نے دیکھی کہ mutex's کیا mutex's جو ہے سب سے worst perform کرتے ہیں لیکن اس کی performance کو بھی ہم تھوڑا سا optimize کر سکتے ہیں using a technique called semaphore throttling جو کہ ہم نے پہلے دیکھا سکتے ہیں اگر بہت زیادہ processes compete کریں ایکی resource کے لیے over a semaphore تو آپ کو optimization problems کا سامنا ہوگا لیکن آپ اس کو optimize کر سکتے ہیں using semaphore throttling تاکہ ایک وقت میں ایک SPECIFIC number of threads یا processes جو ہے وہ ایک resource کے لیے compete کریں بہت زیادہ processes یا threads جو ہے ایک resource کے لیے ایکی وقت میں compete نہ کریں تو یہ آپ کو herar کی نظر آتی ہے تو اس herar کی مطابق ہمیں پتہ لگ رہا ہے کہ اگر ہم worker threads کو use کریں in conjunction with srw locks تو ہمیں ایک کافی اچی سوٹبل کیسم کی performance optimization ملیم