2009-02-03 8 views
32

संभवतः "रैक ओवरफ़्लो" के लिए बेहतर अनुकूल है, लेकिन डेवलपर के दृष्टिकोण से, 64 बिट पर 64 बिट प्रक्रिया के बजाय 32 बिट प्रक्रिया के रूप में आईआईएस (विरासत क्लासिक एएसपी और .NET दोनों की सेवा) चलाने के फायदे और नुकसान क्या हैं विंडोज होस्ट?64 बिट ओएस पर 32 बिट बनाम 64 बिट के रूप में आईआईएस चलाने के पेशेवर और विपक्ष क्या हैं?

32/32 से 32/64 (iis/server) का मुख्य लाभ प्रति आईआईएस प्रक्रिया में स्मृति में 4 जीबी तक जाने की क्षमता प्रतीत होता है।

32/64 से 64/64 से अधिक होने वाले फायदे यह दिखते हैं कि विरासत 32-बिट इन-प्रोसेस डीएलएल तक पहुंचना आसान है (जिसमें से हमारे पास अभी भी एक भागीदार विक्रेता से एक है जिसे हम दूर नहीं जा सकते तत्काल) और शायद एक ही कोड के लिए एक छोटी मेमोरी पदचिह्न जो छोटे मेमोरी पॉइंटर्स दिए गए हैं।

क्या 32/64 से 64/64 का कोई प्रदर्शन लाभ है या कोई और जो अब पूर्ण स्विच की गारंटी देगा? क्या मैंने यहां कोई झूठी धारणाएं की हैं?

उत्तर

3

मुझे नहीं लगता कि आपने कोई झूठी धारणाएं की हैं। लेकिन मैं कहूंगा, नहीं, आपके द्वारा उल्लिखित किसी भी परिदृश्य के बीच कोई प्रदर्शन अंतर होने की संभावना नहीं है। विंडोज़ पर 64 पर 32 पेनल्टी पर काम नहीं करता है। 64 पर 64 कुछ मामूली प्रदर्शन बढ़ावा दे सकता है, लेकिन यह संदिग्ध है। 32-बिट प्रक्रिया के साथ कुछ मेमोरी बचत हो सकती है, लेकिन इस प्रक्रिया को पहले स्थान पर चलाने के लिए आवश्यक थंकिंग से इसकी संभावना है।

आपके द्वारा उल्लिखित डीएलएल मुद्दे का एकमात्र लाभ है। यह भी उन्नयन का एक कारण हो सकता है (यदि आपके पास कुछ विशेष रूप से 64-बिट है जिसका उपयोग करने की आवश्यकता है)।

+0

64 बिट प्रक्रिया चलाने पर उपलब्ध अतिरिक्त रजिस्टरों के बारे में क्या? उन लोगों के प्रदर्शन में सुधार करना चाहिए। – LanceSc

+0

यदि विंडोज 32-बिट प्रक्रिया की तरफ से अतिरिक्त रजिस्टरों का उपयोग नहीं करता है, तो हाँ, शायद वहां एक लाभ है। मुझे उस प्रश्न का उत्तर देने के लिए निचले स्तर की सामग्री के बारे में पर्याप्त जानकारी नहीं है। – TheSmurf

+3

पुन: * 64 पर 64 कुछ मामूली प्रदर्शन बढ़ावा दे सकता है, लेकिन यह संदिग्ध है। * 64 बिट्स का उपयोग करने के लिए कोई जादू प्रदर्शन बढ़ावा नहीं है। असल में एक प्रति-निर्देश कर है जो आप भुगतान करते हैं, यदि आप 64-बिट मोड में हैं। प्रत्येक सूचक गति 64-बिट चौड़ी है, हर तुलना व्यापक है। ये चीजें 32-बिट समकक्ष की तुलना में अधिक सीपीयू चक्र ले सकती हैं। 64-बिट केवल प्रदर्शन भावना बनाता है यदि आपके ऐप को 4 जीबी से अधिक मेमोरी स्पेस तक पहुंचने की आवश्यकता है। अन्य मामलों में, इसका अधिक खर्च होता है। – Cheeso

3

मुझे एक अनुभव है जहां 32 बिट विंडोज 2003 सर्वर से एक 64 बिट विंडोज 2003 सर्वर से चल रहा है IIS 6 चल रहा है और एएसपी.NET 3.5 वेबसाइट का प्रदर्शन अस्वीकार्य था।

64 बिट सर्वर लगातार 32 बिट के पीछे एक स्पष्ट 2 सेकंड चलाएगा।

32 बिट कार्यकर्ता प्रक्रिया के रूप में चलाने के लिए आईआईएस 6 को स्विच करने के बाद, प्रदर्शन एक बार फिर बराबर और तुलनीय था।

मैंने इसे सत्यापित नहीं किया है, लेकिन मुझे लगता है कि यह केवल आईआईएस 6 win2k3 पर लागू हो सकता है, क्योंकि मैंने आईआईएस 7 एक्स 64 (Vista) के साथ किए गए परीक्षण और 64 बिट आईआईएस कार्यकर्ता प्रक्रिया ठीक प्रदर्शन करने लगती है।

32 बिट प्रक्रिया में स्वैप करने की प्रक्रिया काफी सरल थी। यहाँ समर्थन विवरण के साथ KB लेख है: http://support.microsoft.com/kb/894435/en-us

ASP.NET 2.0, 32-बिट संस्करण ASP.NET 2.0 के 32-बिट संस्करण को चलाने के लिए, निम्न चरणों का पालन करें:

  1. क्लिक करें प्रारंभ करें, चलाएँ क्लिक करें, cmd टाइप करें, और उसके बाद ठीकक्लिक करें।
  2. प्रकार निम्न आदेश 32-बिट मोड सक्षम करने के लिए: cscript% SYSTEMDRIVE% \ inetpub \ adminscripts \ adsutil.vbs सेट W3SVC/AppPools/Enable32bitAppOnWin64 1
  3. प्रकार निम्न आदेश ASP.NET के संस्करण को स्थापित करने के लिए 2.0 (32-बिट) और आईआईएस रूट पर स्क्रिप्ट मैप्स इंस्टॉल करने के लिए और नीचे: % SYSTEMROOT% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis.exe -i
  4. सुनिश्चित करें कि एएसपी की स्थिति। नेट संस्करण 2.0.50727 (32-बिट) इंटरनेट सूचना सेवा प्रबंधक में वेब सेवा विस्तार सूची में अनुमत करने के लिए सेट है।

64-बिट पर वापस सेट करने के लिए KB आलेख देखें।

31

64 बिट vevrsus 32-बिट पर आईआईएस चलाने के लिए एकमात्र लाभ लाभ एक बहुत बड़ी स्मृति पता स्थान तक पहुंच की अनुमति देना है।

यदि आप सामान्य एएसपीएक्स पेज प्रोसेसिंग कर रहे हैं, तो संभवतः आपको किसी भी प्रक्रिया से 4 जीबी से अधिक पते को संबोधित करने की आवश्यकता नहीं है। मान लीजिए कि आप उसी मशीन पर एकाधिक कार्यकर्ता प्रक्रियाओं के साथ एक वेब-बगीचे के साथ 32-बिट मोड में चलते हैं। उस स्थिति में प्रत्येक प्रक्रिया 4 जीबी तक का पता लगा सकती है।

जब आप कैशिंग करते हैं तो बड़ा लाभ आ सकता है। एक 64-बिट प्रक्रिया वेब सर्वर पर जटिल पृष्ठ सामग्री या डेटा को कैश करने की अनुमति देने के लिए एक विशाल इन-मेमोरी कैश को बनाए रख सकती है (मान लीजिए कि आपके पास 32 जीबी या अधिक RAM का समर्थन है)। यह perf लाभ देता है जब डेटा को उत्पन्न करने के लिए डेटा अधिक महंगा होता है - उदाहरण के लिए यदि डेटा एक विस्तृत रूप है (मान लें कि मोंटे कार्लो सिमुलेशन का परिणाम कहें), या यदि डेटा ऑफ-बॉक्स और नेटवर्क रहता है आईओ समय कैश-पुनर्प्राप्ति समय से कहीं अधिक महंगा है।

यदि आप कैशिंग का उपयोग नहीं करते हैं, तो 64-बिट आईआईएस आपकी मदद नहीं करेगा। इसके लिए प्रत्येक लुकअप के लिए 64-बिट पॉइंटर्स की आवश्यकता होगी, जो सबकुछ थोड़ा धीमा कर देगा।

64-बिट सर्वर SQL सर्वर, या अन्य डेटा प्रबंधन सर्वर जैसे डाटाबेस के लिए उपयोग किए जाने पर अधिक प्रभावी होते हैं (मान लें, एक्सचेंज जैसे एंटरप्राइज़ ईमेल सर्वर), जैसे आईआईएस या कार्यकर्ता इसे संसाधित करता है प्रबंधन करता है। 64-बिट एड्रेस स्पेस के साथ, सर्वर को डेटा प्रबंधित करने की आवश्यकता वाले इंडेक्स और अन्य कैश के साथ मेमोरी में उस डेटा का अधिक से अधिक डेटा रख सकता है। यह डिस्क IO समय और विस्तार समय बचाता है जब कोई क्वेरी आती है। अधिकांश वेब ऐप्स को एक ही प्रक्रिया से 4 जीबी से अधिक का पता लगाने की आवश्यकता नहीं होती है।


हो सकता है कि एक उपयोगी सादृश्य: परिवहन में, एक बड़े एसयूवी एक 64-बिट मशीन की तरह, एक नियमित रूप से, कॉम्पैक्ट यात्री कार एक 32-बिट सर्वर की तरह है, जबकि। आप एक बड़े एसयूवी में अधिक सामान ले सकते हैं, और इसमें बड़ी टॉइंग क्षमता है, 8 लोगों के लिए बैठना है, और a GVWR of 8600 lbs है। लेकिन सभी के साथ, आप भुगतान करते हैं। ट्रक भारी है। यह अधिक ईंधन का उपयोग करता है। यदि आप केवल 2 लोगों और एक डफेल बैग को कार्टिंग कर रहे हैं, तो आपको एसयूवी की आवश्यकता नहीं है। आप छोटे वाहन के साथ बेहतर हो जाएगा। यह तेज और अधिक कुशल हो सकता है।

+1

+1 अच्छा सादृश्य। – NotMe

+2

आपका समानता त्रुटिपूर्ण है। एक्स 64 प्रक्रिया 64-बिट पर 32-बिट थंकने से तेज प्रदर्शन करेगी। खासकर पुराने आईए 64 प्रोसेसर पर जहां थंकिंग में ध्यान देने योग्य ओवरहेड था। –

+0

हां। कुछ मेमोरी/पॉइंटर गहन ऐप्स को छोड़कर, अधिकांश एप्लिकेशन x86_64 http://www.phoronix.com/scan.php?page=article&item=ubuntu_32_pae&num=1 में बड़ी संख्या में रजिस्टरों का लाभ उठा सकते हैं –

0

स्मृति उपलब्धता के लिए, इस msdn blog देखें।

मेमोरी उपलब्धता। मेरे आवेदन के लिए, हमें 32 बिट ओएस पर 32 बिट ओएस पर 64 बिट ओएस पर 32 बिट प्रक्रिया से स्विच करने की आवश्यकता थी, तीसरे पक्ष के पुस्तकालयों को बदलने की परेशानी के बिना। तो, हम वहां रुक गए। लाभ हैं: 1) प्रत्येक आईआईएस कार्यकर्ता प्रक्रिया के लिए 2-3x प्रभावी मेमोरी उपलब्ध है और 2) 32 बिट ओएस में जहां वेबसाइट बहुत मेमोरी का उपयोग करती है, अन्य सिस्टम प्रक्रियाएं और वेब साइट सीमित कुल मेमोरी के लिए प्रतिस्पर्धा करती हैं। अपने आवेदन के लिए, देखें कि आपकी कार्यकर्ता प्रक्रियाओं की कितनी मेमोरी उपयोग करती है। यदि प्रत्येक डब्ल्यूपी बहुत मेमोरी (1 जीबी से अधिक) का उपयोग नहीं कर रहा है, तो 64 बिट वर्कर प्रोसेस ज्यादा मदद नहीं करेगा।

प्रदर्शन के लिए, मुझे लगता है कि आपको दोनों कॉन्फ़िगरेशन में अपने स्वयं के अनुप्रयोगों का परीक्षण करना होगा। Dave's post उपरोक्त इंगित करता है कि आपके पास 64 बिट के साथ प्रदर्शन गिरावट हो सकती है। As cheeso notes, कुछ एप्लिकेशन कैशिंग से लाभ देख सकते हैं (हालांकि कैश का 2 जीबी + बहुत है)। सीमित और सरल अनुप्रयोगों को छोड़कर, मुझे नहीं लगता कि हम प्रदर्शन सामान्यीकरण करने में सक्षम होंगे। हम विशिष्ट तकनीकों को इंगित करने में सक्षम हो सकते हैं जो बेहतर या बदतर प्रदर्शन करते हैं।

0

स्पष्ट स्मृति अंतर के अलावा, 64 बिट ओएस पर 32 बिट प्रक्रियाओं को "विंडोज़ विंडोज़" या वाह मोड नामक किसी चीज़ में चलाने के लिए है।यह मूल रूप से एक थंकिंग/इम्यूलेशन परत है। यदि आप पर्याप्त ध्यान देते हैं तो एक प्रदर्शन जुर्माना होता है।

संबंधित मुद्दे