के लिए दस्तावेज में निर्देश , nginx प्रलेखन कहते हैंaccess_log
बफ़र का आकार एक परमाणु फ़ाइल के आकार से डिस्क फ़ाइल से अधिक नहीं होना चाहिए।
मैं यह कैसे निर्धारित कर सकता हूं कि यह आकार मेरे सिस्टम पर क्या है?
के लिए दस्तावेज में निर्देश , nginx प्रलेखन कहते हैंaccess_log
बफ़र का आकार एक परमाणु फ़ाइल के आकार से डिस्क फ़ाइल से अधिक नहीं होना चाहिए।
मैं यह कैसे निर्धारित कर सकता हूं कि यह आकार मेरे सिस्टम पर क्या है?
जवाबों:
देर आए दुरुस्त आए :)
त्वरित उत्तर है: "2,147,479,552 बाइट्स, यदि कर्नेल संस्करण 3.14 या नया है"
विस्तृत जवाब:
जहाँ तक मैं समझता हूँ, यह लिखने के बारे में है:
http://man7.org/linux/man-pages/man2/write.2.html
1) कोई भी POSIX सिस्टम (linux, bsd, सभी यूनिक्स) MAX_SSIZE बाइट्स तक लिखने में सक्षम होने की गारंटी है
POSIX.1 के अनुसार, यदि गणना SSIZE_MAX से अधिक है, तो परिणाम कार्यान्वयन-परिभाषित है; लिनक्स पर ऊपरी सीमा के लिए NOTES देखें।
# getconf SSIZE_MAX
32767
2) linux 1.99 GiB तक लिखने में सक्षम होने की गारंटी देता है (और यह linux k गिने वर्जन 3.12 वाँ मोबाइल के लिए परमाणु ऑपरेशन है)
लिनक्स पर, लिखना () और इसी तरह की प्रणाली कॉल) अधिकांश 0x7ffff000 (2,147,479,552) बाइट्स में स्थानांतरित हो जाएंगे, बाइट्स की संख्या वास्तव में स्थानांतरित हो जाएगी। (यह 32-बिट और 64-बिट सिस्टम दोनों पर सच है।)
लेकिन यह लाइनऑन कर्नेल 3.14 से ही उचित परमाणु संचालन है
POSIX.1-2008 / SUSv4 धारा XSI 2.9.7 के अनुसार ("नियमित रूप से फ़ाइल संचालन के साथ थ्रेड इंटरैक्शन"):
जब वे नियमित फाइल या प्रतीकात्मक लिंक पर काम करते हैं, तो POSIX.1-2008 में निर्दिष्ट प्रभावों में निम्नलिखित सभी कार्य एक-दूसरे के संबंध में परमाणु होंगे।
बाद में सूचीबद्ध एपीआई में राइट () और राइटव (2) हैं। और उन प्रभावों के बीच जो थ्रेड्स (और प्रक्रियाओं) में परमाणु होने चाहिए, फाइल ऑफ़सेट के अपडेट हैं। हालांकि, संस्करण 3.14 से पहले लिनक्स पर, यह मामला नहीं था: यदि दो प्रक्रियाएं जो एक खुली फ़ाइल विवरण साझा करती हैं (खुला देखें (2)) एक ही समय में एक लेखन () (या राइटव (2)) करती हैं, तो मैं / ओ ऑपरेशंस फाइल ऑफसेट को अद्यतन करने के संबंध में परमाणु नहीं थे, जिसके परिणामस्वरूप दो प्रक्रियाओं द्वारा डेटा आउटपुट के ब्लॉक ओवरलैप हो सकते हैं। यह समस्या लिनक्स 3.14 में तय की गई थी।
इस सुपरसुअर उत्तर की एक अच्छी परिभाषा थी कि परमाणु लेखन का आकार क्या है।
यह कम से कम हार्डवेयर क्षेत्र के आकार जितना बड़ा है, जो परमाणु रीड / राइट का आकार है।