Erlang 21

erl




erlang

erl

आदेश

erl

कमांड सारांश

एर्लैंग एमुलेटर।

विवरण

erl प्रोग्राम एक Erlang रनटाइम सिस्टम शुरू करता है। सटीक विवरण (उदाहरण के लिए, चाहे erl एक स्क्रिप्ट या एक प्रोग्राम है और जिसे अन्य प्रोग्राम कहते हैं) सिस्टम-निर्भर हैं।

विंडोज उपयोगकर्ता शायद इसके बजाय werl प्रोग्राम का उपयोग करना चाहते हैं, जो स्क्रॉलबार के साथ अपनी खिड़की में चलता है और कमांड-लाइन संपादन का समर्थन करता है। विंडोज पर erl प्रोग्राम अपने शेल में कोई लाइन एडिटिंग प्रदान नहीं करता है, और विंडोज 95 पर स्क्रीन पर वापस स्क्रॉल किए गए टेक्स्ट पर वापस स्क्रॉल करने का कोई तरीका नहीं है। erl प्रोग्राम का उपयोग किया जाना चाहिए, हालाँकि, पाइपलाइनों में या यदि आप मानक इनपुट या आउटपुट को पुनर्निर्देशित करना चाहते हैं।

ध्यान दें

ERTS 5.9 (Erlang / OTP R15B) के रूप में, रनटाइम सिस्टम डिफॉल्ट रूप से शेड्यूलर्स को तार्किक प्रोसेसर से नहीं बांधता है। अधिक जानकारी के लिए, सिस्टम ध्वज +sbt

निर्यात

erl <तर्क>

एक एरलांग रनटाइम सिस्टम शुरू करता है।

तर्कों को एमुलेटर झंडे , झंडे और सादे तर्कों में विभाजित किया जा सकता है :

  • चरित्र + से शुरू होने वाले किसी भी तर्क की व्याख्या एक emulator flag

    जैसा कि नाम से संकेत मिलता है, एमुलेटर झंडे एमुलेटर के व्यवहार को नियंत्रित करते हैं।

  • चरित्र के साथ शुरू होने वाले किसी भी तर्क - (हाइफ़न) की व्याख्या एक flag रूप में की जाती है, जिसे रनटाइम सिस्टम के एरलंग भाग में पारित किया जाना है, विशेष रूप से init सिस्टम प्रक्रिया को, init(3)

    init प्रक्रिया ही इन झंडे, init झंडे में से कुछ की व्याख्या करता है। यह किसी भी शेष झंडे को संग्रहीत करता है, उपयोगकर्ता झंडे । बाद को init:get_argument/1 कॉल करके प्राप्त किया जा सकता है init:get_argument/1

    "-" झंडे की एक छोटी संख्या मौजूद है, जो अब वास्तव में एमुलेटर झंडे हैं, नीचे विवरण देखें।

  • सादा तर्कों की किसी भी तरह से व्याख्या नहीं की जाती है। उन्हें init प्रक्रिया द्वारा भी संग्रहीत किया जाता है और init कॉल करके पुनर्प्राप्त किया जा सकता है init:get_plain_arguments/0 । सादा तर्क पहले झंडे से पहले हो सकता है, या बाद में -- झंडा। इसके अलावा, -extra ध्वज सब कुछ का कारण बनता है जो सादे तर्क बन जाता है।

उदाहरण:

% erl +W w -sname arnie +R 9 -s my_init -extra +bertie
([email protected])1> init:get_argument(sname).
{ok,[["arnie"]]}
([email protected])2> init:get_plain_arguments().
["+bertie"]

यहाँ +W w और +R 9 एमुलेटर फ्लैग हैं। -s my_init एक init ध्वज है, जो init द्वारा व्याख्या किया गया है। -sname arnie एक यूजर फ्लैग होता है, जिसे init द्वारा स्टोर किया जाता है। यह कर्नेल द्वारा पढ़ा जाता है और एर्लांग रनटाइम सिस्टम को वितरित करने का कारण बनता है। अंत में, सब कुछ के बाद +bertie (अर्थात, +bertie ) को सादे तर्क के रूप में माना जाता है।

% erl -myflag 1
1> init:get_argument(myflag).
{ok,[["1"]]}
2> init:get_plain_arguments().
[]

यहां यूजर फ्लैग -myflag 1 को init प्रोसेस द्वारा पास और स्टोर किया जाता है। यह एक उपयोगकर्ता-परिभाषित ध्वज है, संभवतः कुछ उपयोगकर्ता-परिभाषित अनुप्रयोग द्वारा उपयोग किया जाता है।

झंडे

निम्नलिखित सूची में, इनिट झंडे "(init ध्वज)" चिह्नित हैं। जब तक अन्यथा निर्दिष्ट नहीं किया जाता है, अन्य सभी झंडे उपयोगकर्ता झंडे हैं, जिसके लिए मूल्यों को init:get_argument/1 कहकर पुनर्प्राप्त किया जा सकता है init:get_argument/1 । ध्यान दें कि उपयोगकर्ता झंडे की सूची संपूर्ण नहीं है, इसके बजाय अधिक अनुप्रयोग-विशिष्ट झंडे हो सकते हैं जो इसके बजाय संबंधित अनुप्रयोग प्रलेखन में वर्णित हैं।

-- (इनिट फ्लैग)

अगले झंडे ( -flag या +flag ) तक की सभी -flag सादा तर्क माना जाता है और init:get_plain_arguments/0 का उपयोग करके पुनर्प्राप्त किया जा सकता है init:get_plain_arguments/0

-Application Par Val

अनुप्रयोग के लिए वैल्यू Val Par एप्लिकेशन कॉन्फ़िगरेशन पैरामीटर Par सेट करता है; app(4) और application(3)

-args_file FileName

कमांड लाइन तर्क FileName से पढ़े जाते हैं। फ़ाइल से पढ़े गए तर्क परिणामी कमांड लाइन पर ध्वज ' -args_file FileName ' को प्रतिस्थापित करते हैं।

FileName एक सादा पाठ फ़ाइल है और इसमें टिप्पणियाँ और कमांड-लाइन तर्क हो सकते हैं। एक टिप्पणी एक # चरित्र के साथ शुरू होती है और पंक्ति चरित्र के अगले अंत तक जारी रहती है। बैकस्लैश (\\) का प्रयोग चरित्र के उद्धरण के रूप में किया जाता है। -args_file FileName द्वारा स्वीकृत सभी कमांड-लाइन तर्कों को भी अनुमति दी गई है, -args_file FileName -args_file , फ्लैग -args_file युक्त फ़ाइलों के बीच परिपत्र निर्भरता का कारण न बनें, हालाँकि।

झंडे- -extra का विशेष तरीके से इलाज किया जाता है। इसका दायरा फ़ाइल के अंत में समाप्त होता है। -extra फ्लैग के बाद आर्ग्युमेंट्स को कमांड लाइन पर -extra सेक्शन में ले जाया जाता है, यानी कमांड लाइन का अंत एक-फ्लैग फ्लैग के बाद होता है।

-async_shell_start

सिस्टम बूट प्रक्रिया पूरी होने तक (एरलांग / ओटीपी 5.4 और बाद में) प्रारंभिक अर्लंग शेल उपयोगकर्ता इनपुट को नहीं पढ़ता है। यह ध्वज प्रारंभ सिंक्रनाइज़ेशन सुविधा को अक्षम करता है और शेल को सिस्टम के बाकी हिस्सों के समानांतर शुरू करने देता है।

-boot File

बूट फ़ाइल का नाम निर्दिष्ट करता है, File.boot , जिसका उपयोग सिस्टम को शुरू करने के लिए किया जाता है; init(3) । जब तक File में एक निरपेक्ष पथ नहीं होता, तब तक सिस्टम मौजूदा और $ROOT/bin निर्देशिकाओं में File.boot खोज करता है।

$ROOT/bin/start.boot लिए डिफ़ॉल्ट।

-boot_var Var Dir

यदि बूट स्क्रिप्ट में $ROOT अलावा कोई पथ वैरिएबल है, तो यह चर Dir विस्तारित है। $ROOT/lib तुलना में किसी अन्य निर्देशिका में एप्लिकेशन इंस्टॉल किए जाने पर उपयोग किया जाता है; systools:make_script/1,2 देखें systools:make_script/1,2 SASL में।

-code_path_cache

कोड सर्वर के कोड पथ कैश को सक्षम करता है; code(3) देखें code(3)

-compile Mod1 Mod2 ...

निर्दिष्ट मॉड्यूल संकलित करता है और फिर समाप्त हो जाता है (गैर-शून्य निकास कोड के साथ अगर कुछ फ़ाइल का संकलन सफल नहीं हुआ)। इंप्लाइज -noinput

सिफारिश नहीं की गई; इसके बजाय erlc उपयोग करें।

-config Config

कॉन्फ़िगरेशन फ़ाइल का नाम निर्दिष्ट करता है, जो Config.config , जो अनुप्रयोगों को कॉन्फ़िगर करने के लिए उपयोग किया जाता है; app(4) और application(3)

-connect_all false

यदि यह ध्वज मौजूद है, तो global वितरित एर्लांग नोड्स के पूरी तरह से जुड़े नेटवर्क को बनाए नहीं रखता है, और फिर वैश्विक नाम पंजीकरण का उपयोग नहीं किया जा सकता है; global(3) देखें global(3)

-cookie Cookie

किसी भी प्रभाव के बिना अप्रचलित ध्वज और -setcookie लिए आम गलत वर्तनी। इसके बजाय -setcookie उपयोग करें।

-detached

सिस्टम कंसोल से निकाले गए Erlang रनटाइम सिस्टम को शुरू करता है। डेमॉन और पृष्ठभूमि प्रक्रियाओं को चलाने के लिए उपयोगी। इंप्लाइज -noinput

-emu_args

डिबगिंग के लिए उपयोगी है। एमुलेटर को भेजे गए तर्कों को प्रिंट करता है।

-emu_type Type

एक अलग प्रकार का एक एमुलेटर शुरू करें। उदाहरण के लिए, लॉक-काउंटर इम्यूलेटर शुरू करने के लिए, -emu_type lcnt उपयोग करें। (एमुलेटर पहले से ही बनाया जाना चाहिए। लॉक-काउंटर एमुलेटर के निर्माण के लिए configure विकल्प का उपयोग करें --enable-lock-counter लॉक-काउंटर।)

-env Variable Value

मेजबान ओएस वातावरण चर को एर्लांग रनटाइम सिस्टम के Value लिए सेट करता है। उदाहरण:

% erl -env DISPLAY gin:0

इस उदाहरण में, एक एरलैंग रनटाइम सिस्टम को पर्यावरण चर DISPLAY साथ gin:0

-epmd_module Module ( -epmd_module Module ध्वज)

epmd से संवाद करने के लिए जिम्मेदार मॉड्यूल को कॉन्फ़िगर करता है। erl_epmd

-eval Expr ( -eval Expr फ्लैग)

init एक्सप्रेशन एक्सप्रेशन का मूल्यांकन करता है; init(3)

-extra (इनिट फ्लैग)

निम्नलिखित सभी -extra को-सादा तर्क माना जाता है और init:get_plain_arguments/0 का उपयोग करके पुनर्प्राप्त किया जा सकता है init:get_plain_arguments/0

-heart

एर्लांग रनटाइम सिस्टम की दिल की धड़कन की निगरानी शुरू करता है; heart(3) देखें heart(3)

-hidden

यदि वह एक वितरित नोड के रूप में चलाया जाता है, तो एक छिपे हुए नोड के रूप में एरलैंग रनटाइम सिस्टम शुरू करता है। छिपे हुए नोड्स हमेशा एक ही वैश्विक समूह में नोड्स को छोड़कर अन्य सभी नोड्स के लिए छिपे हुए कनेक्शन स्थापित करते हैं। किसी भी जुड़े नोड पर छिपे हुए कनेक्शन प्रकाशित नहीं होते हैं, अर्थात, कनेक्ट किए गए नोड्स में से कोई भी दूसरे नोड पर nodes/0 से परिणाम का हिस्सा नहीं है। छिपे हुए वैश्विक समूह भी देखें; global_group(3)

-hosts Hosts

उस होस्ट के लिए IP पते निर्दिष्ट करता है जिस पर Erlang बूट सर्वर चल रहे हैं, erl_boot_server(3) । यदि ध्वज- -loader inet मौजूद है तो यह ध्वज अनिवार्य है।

आईपी ​​पते को मानक रूप में निर्दिष्ट किया जाना चाहिए (उदाहरण के लिए, "150.236.20.74" द्वारा अलग-अलग चार दशमलव संख्याएं। मेजबान नाम स्वीकार्य नहीं हैं, लेकिन एक प्रसारण पता (अधिमानतः स्थानीय नेटवर्क तक सीमित) है।

-id Id

Erlang क्रम प्रणाली की पहचान को निर्दिष्ट करता है। यदि इसे वितरित नोड के रूप में चलाया जाता है, तो Id को फ्लैग -sname या -name साथ दिए गए नाम के समान होना चाहिए।

-init_debug

बूट स्क्रिप्ट की व्याख्या करते समय init कुछ डिबग जानकारी लिखते हैं।

-instr (एमुलेटर फ्लैग)

साधारण के बजाय चलाने के लिए एक इंस्ट्रूमेंट एर्लांग रनटाइम सिस्टम (वर्चुअल मशीन) का चयन करता है। इंस्ट्रूमेंट रनटाइम सिस्टम को चलाते समय, कुछ संसाधन उपयोग डेटा instrument मॉड्यूल का उपयोग करके प्राप्त किया जा सकता है और इसका विश्लेषण किया जा सकता है। कार्यात्मक रूप से, यह बिल्कुल एक साधारण एरलंग रनटाइम सिस्टम की तरह व्यवहार करता है।

-loader Loader

Erlang मॉड्यूल को सिस्टम में लोड करने के लिए erl_prim_loader द्वारा उपयोग की जाने वाली विधि को निर्दिष्ट करता है; erl_prim_loader(3) । दो Loader विधियाँ समर्थित हैं:

  • efile , जिसका अर्थ है स्थानीय फ़ाइल सिस्टम का उपयोग, यह डिफ़ॉल्ट है।

  • inet , जिसका अर्थ है किसी अन्य मशीन पर बूट सर्वर का उपयोग करें। झंडे -id , -hosts और -setcookie को भी निर्दिष्ट किया जाना चाहिए।

यदि Loader कुछ और है, तो उपयोगकर्ता द्वारा लोड किए गए Loader पोर्ट प्रोग्राम को शुरू किया जाता है।

-make

एर्लांग रनटाइम सिस्टम बनाता है make:all() वर्तमान कार्य निर्देशिका में make:all() और फिर समाप्त हो जाते हैं; देखना make(3) । इंप्लाइज -noinput

-man Module

Erlang मॉड्यूल Module लिए मैनुअल पृष्ठ प्रदर्शित करता है। केवल यूनिक्स पर समर्थित है।

-mode interactive | embedded

जब पहली बार interactive मोड में रनटाइम सिस्टम चलता है, जो कि डिफ़ॉल्ट होता है, तो मॉड्यूल को पहले लोड किया जाता है। embedded मोड में मॉड्यूल ऑटो लोड नहीं होते हैं। बाद की सिफारिश की जाती है जब बूट स्क्रिप्ट सभी मॉड्यूल को लोड करता है, क्योंकि पारंपरिक रूप से ओटीपी रिलीज में होता है। code(3) देखें code(3)

-name Name

एर्लांग रनटाइम सिस्टम को वितरित नोड में बनाता है। यह ध्वज वितरित किए जाने के लिए नोड के लिए आवश्यक सभी नेटवर्क सर्वरों को आमंत्रित करता है; net_kernel(3) । यह भी सुनिश्चित किया जाता है कि epmd शुरू होने से पहले वर्तमान मेजबान पर epmd चलता है; epmd । और -start_epmd विकल्प।

नोड नाम [email protected] , जहां Host वर्तमान होस्ट का पूरी तरह से योग्य होस्ट नाम है। छोटे नामों के लिए, बजाय -sname उपयोग करें।

चेतावनी

डिस्ट्रिब्यूट किए गए नोड को भी निर्दिष्ट किए बिना शुरू करना -proto_dist inet_tls उन हमलों को नोड को उजागर करेगा जो हमलावर को नोड तक पहुंच प्रदान कर सकते हैं और क्लस्टर का विस्तार कर सकते हैं। अन-सिक्योर डिस्ट्रिब्यूटेड नोड्स का उपयोग करते समय, सुनिश्चित करें कि संभावित हमलावरों को बाहर रखने के लिए नेटवर्क को कॉन्फ़िगर किया गया है।

-noinput

सुनिश्चित करता है कि एर्लांग रनटाइम सिस्टम कभी भी किसी इनपुट को पढ़ने की कोशिश नहीं करता है। इंप्लाइज -noshell

-noshell

बिना शेल वाला एक एरलांग रनटाइम सिस्टम शुरू करता है। यह ध्वज यूनिक्स पाइपों की एक श्रृंखला में एक घटक के रूप में एरलांग रनटाइम सिस्टम को संभव बनाता है।

-nostick

Erlang कोड सर्वर की चिपचिपी निर्देशिका सुविधा को अक्षम करता है; code(3) देखें code(3)

-oldshell

Erlang / OTP 3.3 से पुराने Erlang शेल को आमंत्रित करता है। पुराने शेल का अभी भी उपयोग किया जा सकता है।

-pa Dir1 Dir2 ...

कोड के पथ की शुरुआत के लिए निर्दिष्ट निर्देशिकाओं को जोड़ता है, कोड के समान code:add_pathsa/1 । ध्यान दें कि दिए गए निर्देशिकाओं का क्रम परिणामी पथ में उलट जाएगा।

-pa विकल्प के रूप में, यदि कई निर्देशिकाओं को कोड पथ के लिए तैयार किया जाना है और निर्देशिकाओं में एक सामान्य मूल निर्देशिका है, तो माता-पिता की निर्देशिका को पर्यावरण चर ERL_LIBS में निर्दिष्ट किया जा सकता है; code(3) देखें code(3)

-pz Dir1 Dir2 ...

कोड के पथ के अंत में निर्दिष्ट निर्देशिकाओं को जोड़ता है, कोड के समान code:add_pathsz/1 ; code(3) देखें code(3)

-path Dir1 Dir2 ...

बूट स्क्रिप्ट में निर्दिष्ट पथ को बदलता है; script(4) देखें script(4)

-proto_dist Proto

एर्लांग वितरण के लिए एक प्रोटोकॉल निर्दिष्ट करता है:

inet_tcp
IPv4 पर TCP (डिफ़ॉल्ट)
inet_tls
TLS / SSL पर वितरण, सुरक्षित वितरित नोड को सेटअप करने के तरीके के विवरण के Using SSL for Erlang Distribution उपयोगकर्ता की मार्गदर्शिका के लिए Using SSL for Erlang Distribution देखें।
inet6_tcp
IPv6 पर टीसीपी

उदाहरण के लिए, IPv6 वितरित नोड शुरू करने के लिए:

% erl -name [email protected] -proto_dist inet6_tcp
-remsh Node

इरोडांग को Node जुड़े एक दूरस्थ शेल से शुरू करता है।

-rsh Program

एक दूरस्थ मेजबान पर एक दास नोड शुरू करने के लिए rsh लिए एक विकल्प निर्दिष्ट करता है; slave(3)

-run Mod [Func [Arg1, Arg2, ...]] (init flag)

init निर्दिष्ट फ़ंक्शन को कॉल करता है। Func start करने के start चूक। यदि कोई तर्क प्रदान नहीं किया जाता है, तो फ़ंक्शन को माना जाता है Arity 0. नहीं तो इसे Arity 1 का माना जाता है [Arg1,Arg2,...] तर्क के रूप में सूची [Arg1,Arg2,...] को लेते हुए। सभी तर्क तार के रूप में पारित किए जाते हैं। init(3) देखें।

-s Mod [Func [Arg1, Arg2, ...]] (इनिट फ्लैग)

init निर्दिष्ट फ़ंक्शन को कॉल करता है। Func start करने के start चूक। यदि कोई तर्क प्रदान नहीं किया जाता है, तो फ़ंक्शन को माना जाता है Arity 0. नहीं तो इसे Arity 1 का माना जाता है [Arg1,Arg2,...] तर्क के रूप में सूची [Arg1,Arg2,...] को लेते हुए। सभी तर्क परमाणुओं के रूप में पारित किए जाते हैं। init(3) देखें।

-setcookie Cookie

कुकी के लिए नोड का जादू कुकी सेट करता है; erlang:set_cookie/2 देखें erlang:set_cookie/2

-shutdown_time Time

निर्दिष्ट करता है कि सिस्टम को शट डाउन करने के लिए init प्रक्रिया को कितने समय (मिलीसेकंड में) अनुमति है। यदि Time मिलीसेकंड बीत चुका है, तो अभी भी मौजूद सभी प्रक्रियाएं मार दी गई हैं। infinity

-sname Name

Erlang रनटाइम सिस्टम को एक वितरित नोड में, -name समान बनाता है, लेकिन नोड नाम का होस्ट नाम भाग [email protected] छोटा नाम होगा, पूरी तरह से योग्य नहीं।

यदि डोमेन नाम सिस्टम (DNS) नहीं चल रहा है तो यह कभी-कभी वितरित एर्लैंग को चलाने का एकमात्र तरीका है। ध्वज -sname साथ चलने वाले नोड्स और ध्वज-नाम के साथ चलने वाले लोगों के बीच कोई संचार मौजूद नहीं हो सकता है, क्योंकि वितरित इरोडांग सिस्टम में नोड नाम अद्वितीय होने चाहिए।

चेतावनी

डिस्ट्रिब्यूट किए गए नोड को भी निर्दिष्ट किए बिना शुरू करना -proto_dist inet_tls उन हमलों को नोड को उजागर करेगा जो हमलावर को नोड तक पहुंच प्रदान कर सकते हैं और क्लस्टर का विस्तार कर सकते हैं। अन-सिक्योर डिस्ट्रिब्यूटेड नोड्स का उपयोग करते समय, सुनिश्चित करें कि संभावित हमलावरों को बाहर रखने के लिए नेटवर्क को कॉन्फ़िगर किया गया है।

-start_epmd true | false

निर्दिष्ट करता है कि क्या epmd को स्टार्टअप पर epmd शुरू करना चाहिए। डिफ़ॉल्ट रूप से यह true , लेकिन यदि आप मैन्युअल रूप से एपीएमडी शुरू करना पसंद करते हैं, तो इसे false सेट करें।

यह केवल तभी लागू होता है जब -sname को वितरित नोड के रूप में शुरू किया जाता है, अर्थात यदि -name या -sname निर्दिष्ट किया जाता है। नहीं तो, अगर -start_epmd true दिया जाता है, तब भी -start_epmd true शुरू नहीं किया जाता है।

ध्यान दें कि एक वितरित नोड शुरू करने में विफल होगा अगर एपीएमडी नहीं चल रहा है।

-version (एमुलेटर फ्लैग)

एमुलेटर इसके वर्जन नंबर को प्रिंट करता है। erl +V समान।

एमुलेटर फ्लैग्स

erl Erlang emulator (वर्चुअल मशीन) के लिए कोड को erl करता है, जो निम्नलिखित झंडे का समर्थन करता है:

+a size

स्टैक का आकार, किलोवाट में, async थ्रेड पूल में धागे के लिए। वैध सीमा 16-8192 किलोवाट है। डिफ़ॉल्ट सुझाए गए स्टैक का आकार 16 किलोवाट है, अर्थात 32-बिट आर्किटेक्चर पर 64 किलोबाइट है। इस छोटे डिफ़ॉल्ट आकार को चुना गया है क्योंकि एसिंक्स थ्रेड्स की संख्या बड़ी हो सकती है। डिफ़ॉल्ट आकार Erlang / OTP के साथ दिए गए ड्राइवरों के लिए पर्याप्त है, लेकिन ड्राइवर driver_async() कार्यक्षमता का उपयोग करने वाले अन्य गतिशील रूप से लिंक किए गए ड्राइवरों के लिए पर्याप्त बड़ा नहीं हो सकता है। ध्यान दें कि दिया गया मान केवल एक सुझाव है, और इसे कुछ प्लेटफार्मों पर अनदेखा भी किया जा सकता है।

+A size

Async थ्रेड पूल में थ्रेड्स की संख्या सेट करता है। वैध सीमा 0-1024 है। 1 से चूक।

+B [c | d | i]

विकल्प c एमुलेटर ब्रेक हैंडलर को लागू करने के बजाय वर्तमान शेल को Ctrl-C बाधित करता है। विकल्प d (एक अतिरिक्त विकल्प के बिना +B निर्दिष्ट करने के रूप में) ब्रेक हैंडलर को निष्क्रिय करता है। विकल्प i एमुलेटर को किसी भी ब्रेक सिग्नल को अनदेखा करता है।

यदि विकल्प c का उपयोग यूनिक्स पर oldshell साथ किया जाता है, तो Ctrl-C इसे बाधित करने के बजाय शेल प्रक्रिया को पुनः आरंभ करेगा।

ध्यान दें कि विंडोज पर, यह ध्वज केवल werl लिए लागू होता है, werl ( oldshell ) पर नहीं। यह भी ध्यान दें कि विंडोज पर Ctrl-C बजाय Ctrl-Break का उपयोग किया जाता है।

+c true | false

time correction सक्षम या अक्षम time correction :

true
समय सुधार में सक्षम बनाता है। यदि विशिष्ट प्लेटफ़ॉर्म पर समय सुधार का समर्थन किया जाता है तो यह डिफ़ॉल्ट है।
false
समय सुधार को निष्क्रिय करता है।

पश्चगामी संगतता के लिए, बूलियन मूल्य को छोड़ा जा सकता है। इसकी व्याख्या +c false

+C no_time_warp | single_time_warp | multi_time_warp

सेट time warp mode :

no_time_warp
No time warp mode (डिफ़ॉल्ट)
single_time_warp
Single time warp mode
multi_time_warp
Multi-time warp mode
+d

यदि एमुलेटर एक आंतरिक त्रुटि (या मेमोरी से बाहर निकलता है) का पता लगाता है, तो यह डिफ़ॉल्ट रूप से, क्रैश डंप और कोर डंप दोनों उत्पन्न करता है। कोर डंप, हालांकि, बहुत उपयोगी नहीं है क्योंकि प्रक्रिया डंप की सामग्री दुर्घटना डंप पीढ़ी द्वारा नष्ट हो जाती है।

विकल्प +d एमुलेटर को केवल एक कोर डंप और कोई क्रैश डंप का उत्पादन करने का निर्देश देता है यदि आंतरिक त्रुटि का पता लगाया जाता है।

कॉलिंग erlang:halt/1 एक स्ट्रिंग तर्क के साथ अभी भी क्रैश डंप का उत्पादन करता है। यूनिक्स प्रणालियों पर, एक एमुलेटर प्रक्रिया को SIGUSR1 सिग्नल भेजने से क्रैश डंप भी होता है।

+e Number

ईटीएस तालिकाओं की अधिकतम संख्या निर्धारित करता है। यह सीमा partially obsolete

+ec

सभी ईटीएस तालिकाओं पर मजबूर विकल्प विकल्प। केवल परीक्षण और मूल्यांकन के लिए इरादा।

+fnl

वर्चुअल मशीन फ़ाइलनाम के साथ काम करती है जैसे कि वे आईएसओ लैटिन -1 एन्कोडिंग का उपयोग करके एन्कोड किए गए हैं, कोड अंक> 255 के साथ यूनिकोड वर्णों को अस्वीकार कर रहे हैं।

यूनिकोड फाइलनाम के बारे में अधिक जानकारी के लिए, STDLIB उपयोगकर्ता गाइड में Unicode Filenames देखें। ध्यान दें कि यह मान कमांड-लाइन पैरामीटर और पर्यावरण चर पर भी लागू होता है (STDLIB उपयोगकर्ता गाइड Unicode in Environment and Parameters में अनुभाग Unicode in Environment and Parameters देखें)।

+fnu[{w|i|e}]

वर्चुअल मशीन फ़ाइलनाम के साथ काम करती है जैसे कि वे UTF-8 (या कुछ अन्य सिस्टम-विशिष्ट यूनिकोड एन्कोडिंग) का उपयोग करके एन्कोडेड हैं। यह ऑपरेटिंग सिस्टम पर डिफ़ॉल्ट है जो यूनिकोड एन्कोडिंग को लागू करता है, अर्थात, विंडोज और मैकओएस एक्स।

+fnu स्विच को w , i , या e के द्वारा नियंत्रित किया जा सकता है कि कैसे गलत तरीके से इनकोड किए गए फ़ाइलनामों को सूचित किया जाए:

  • w अर्थ है कि जब भी कोई गलत तरीके से एन्कोडेड फ़ाइल नाम निर्देशिका सूचियों में "स्किप" किया जाता है, तो error_logger को एक चेतावनी भेजी जाती है। यह डिफ़ॉल्ट है।

  • i मतलब है कि गलत तरीके से एन्कोड किए गए फ़ाइलनामों को चुपचाप अनदेखा कर दिया जाता है।

  • e मतलब है कि एपीआई फ़ंक्शन एक त्रुटि देता है जब भी गलत तरीके से एन्कोडेड फ़ाइल नाम (या निर्देशिका नाम) का सामना करना पड़ता है।

उस file:read_link/1 हमेशा एक त्रुटि देता है यदि लिंक किसी अमान्य फ़ाइलनाम की ओर file:read_link/1

यूनिकोड फाइलनाम के बारे में अधिक जानकारी के लिए, STDLIB उपयोगकर्ता गाइड में Unicode Filenames देखें। ध्यान दें कि यह मान कमांड-लाइन पैरामीटर और पर्यावरण चर पर भी लागू होता है (STDLIB उपयोगकर्ता गाइड Unicode in Environment and Parameters में अनुभाग Unicode in Environment and Parameters देखें)।

+fna[{w|i|e}]

OS में वर्तमान लोकेल सेटिंग्स के आधार पर +fnl और +fnu बीच चयन किया जाता है। इसका मतलब यह है कि यदि आपने UTF-8 एन्कोडिंग के लिए अपना टर्मिनल निर्धारित किया है, तो फाइलसिस्टम फाइलनाम के लिए समान एन्कोडिंग का उपयोग करने की उम्मीद करता है। यह मैकओएस एक्स और विंडोज को छोड़कर सभी ऑपरेटिंग सिस्टम पर डिफ़ॉल्ट है।

+fna स्विच को w , i , या e द्वारा अनुसरण किया जा सकता है। इसका प्रभाव तब होता है जब स्थानीय सेटिंग +fnu के व्यवहार का चयन करने का कारण बनती हैं; ऊपर +fnu का वर्णन देखें। यदि लोकेल सेटिंग्स +fnl के व्यवहार को +fnl का कारण +fnl , तो w , i , या e का कोई प्रभाव नहीं होता है।

यूनिकोड फाइलनाम के बारे में अधिक जानकारी के लिए, STDLIB उपयोगकर्ता गाइड में Unicode Filenames देखें। ध्यान दें कि यह मान कमांड-लाइन पैरामीटर और पर्यावरण चर पर भी लागू होता है (STDLIB उपयोगकर्ता गाइड Unicode in Environment and Parameters में अनुभाग Unicode in Environment and Parameters देखें)।

+hms Size

डिफ़ॉल्ट आकार की प्रक्रियाओं का आकार आकार Size

+hmbs Size

डिफ़ॉल्ट बाइनरी वर्चुअल हीप प्रक्रियाओं को आकार Size

+hmax Size

प्रक्रियाओं का डिफ़ॉल्ट अधिकतम ढेर आकार आकार निर्धारित करता है। डिफॉल्ट्स टू 0 , जिसका अर्थ है कि अधिकतम ढेर का उपयोग नहीं किया जाता है। अधिक जानकारी के लिए, देखें process_flag(max_heap_size, MaxHeapSize)

+hmaxel true|false

अधिकतम लॉग आकार तक पहुँचने वाली प्रक्रियाओं के लिए एक त्रुटि लकड़हारा संदेश भेजने या नहीं भेजने के लिए सेट करता है। true अवहेलना। अधिक जानकारी के लिए, देखें process_flag(max_heap_size, MaxHeapSize)

+hmaxk true|false

सेट करता है कि अधिकतम ढेर आकार तक पहुंचने वाली प्रक्रियाओं को मारना है या नहीं। true लिए डिफ़ॉल्ट। अधिक जानकारी के लिए, देखें process_flag(max_heap_size, MaxHeapSize)

+hpds Size

प्रारंभिक प्रक्रिया शब्दकोश प्रक्रियाओं का आकार आकार Size

+hmqd off_heap|on_heap

प्रक्रिया ध्वज message_queue_data डिफ़ॉल्ट मान सेट करता है। on_heap डिफ़ॉल्ट। अगर +hmqd पास नहीं है, तो on_heap डिफ़ॉल्ट होगा। अधिक जानकारी के लिए, process_flag(message_queue_data, MQD)

+IOp PollSets

I / O के लिए मतदान करते समय उपयोग करने के लिए IO पोलसेट की संख्या निर्धारित करता है। इस विकल्प का उपयोग केवल उन प्लेटफ़ॉर्म पर किया जाता है जो एक पोलसेट के समवर्ती अद्यतनों का समर्थन करते हैं, अन्यथा समान संख्या में पोलेट्स का उपयोग IO मतदान सूत्र के रूप में किया जाता है। डिफ़ॉल्ट 1 है।

+IOt PollThreads

I / O के लिए मतदान करते समय उपयोग करने के लिए IO पोल थ्रेड्स की संख्या निर्धारित करता है। प्रदत्त थ्रेड की अधिकतम संख्या 1024 है। डिफ़ॉल्ट 1 है।

यह जांचने का एक अच्छा तरीका है कि अधिक IO पोल थ्रेड्स की आवश्यकता है, तो microstate accounting का उपयोग करें और देखें कि IO microstate accounting का भार क्या है। यदि यह अधिक है तो अधिक धागे जोड़ना एक अच्छा विचार हो सकता है।

+IOPp PollSetsPercentage

+IOp समान लेकिन कॉन्फ़िगर किए गए पोल थ्रेड्स की संख्या के आधार पर IO पोलसेट की संख्या सेट करने के लिए प्रतिशत का उपयोग करता है। यदि +IOPp और +IOp दोनों का उपयोग किया जाता है, तो +IOPp को अनदेखा कर दिया जाता है।

+IOPt PollThreadsPercentage

+IOt समान लेकिन कॉन्फ़िगर किए गए शेड्यूलरों की संख्या के आधार पर IO पोल थ्रेड की संख्या सेट करने के लिए प्रतिशत का उपयोग करता है। यदि +IOPt और +IOt दोनों का उपयोग किया जाता है, तो +IOPt को अनदेखा कर दिया जाता है।

+l

कोड लोड करते समय सूचना प्रदर्शित करते हुए ऑटोलॉड ट्रेसिंग को सक्षम करता है।

+L

स्रोत फ़ाइल नाम और लाइन नंबर के बारे में जानकारी लोड करने से रोकता है। यह कुछ मेमोरी को बचाता है, लेकिन अपवाद में फ़ाइल नाम और लाइन नंबर के बारे में जानकारी नहीं होती है।

+MFlag Value

मेमोरी एलोकेटर-विशिष्ट झंडे। अधिक जानकारी के लिए, erts_alloc(3)

+pc Range

वर्णों की सीमा को सेट करता है जिसे सिस्टम स्ट्रिंग्स के अनुमानवादी पता लगाने में प्रिंट करने योग्य मानता है। यह आमतौर पर शेल, डीबगर, और io:format फ़ंक्शन (जब प्रारूप स्ट्रिंग में ~tp का उपयोग किया जाता है) को प्रभावित करता है।

Range लिए दो मान समर्थित हैं:

latin1
डिफ़ॉल्ट। आईएसओ लैटिन -1 श्रेणी के केवल वर्णों को मुद्रण योग्य माना जा सकता है। इसका मतलब यह है कि एक कोड बिंदु> 255 के साथ एक चरित्र को कभी भी प्रिंट करने योग्य नहीं माना जाता है और इस तरह के पात्रों वाली सूचियों को टूल द्वारा टेक्स्ट स्ट्रिंग्स के बजाय पूर्णांक की सूची के रूप में प्रदर्शित किया जाता है।
unicode
सभी प्रिंट करने योग्य यूनिकोड वर्णों का निर्धारण करते समय माना जाता है कि पूर्णांक की एक सूची स्ट्रिंग सिंटैक्स में प्रदर्शित की जानी है। यह अप्रत्याशित परिणाम दे सकता है, उदाहरण के लिए, आपका फ़ॉन्ट सभी यूनिकोड वर्णों को कवर नहीं करता है।

io:printable_range/0 भी देखें io:printable_range/0 STDLIB में io:printable_range/0

+P Number

इस प्रणाली के लिए एक साथ मौजूदा प्रक्रियाओं की अधिकतम संख्या निर्धारित करता है अगर कोई Number मान के रूप में पारित की जाती है। Number लिए वैध सीमा [1024-134217727]

नोट : वास्तविक अधिकतम चुना गया Number तुलना में बहुत बड़ा हो सकता है। वर्तमान में रनटाइम सिस्टम अक्सर, लेकिन हमेशा नहीं, एक मूल्य चुनता है जो कि एक शक्ति है 2. यह, हालांकि, भविष्य में बदला जा सकता है। चुना गया वास्तविक मान erlang:system_info(process_limit) को कॉल करके चेक किया जा सकता है।

डिफ़ॉल्ट मान 262144

+Q Number

यदि इस संख्या को मान के रूप में पारित किया जाता है, तो इस प्रणाली के लिए एक साथ मौजूदा बंदरगाहों की अधिकतम संख्या निर्धारित करता है। Number लिए वैध सीमा [1024-134217727]

नोट : वास्तविक अधिकतम चुना गया वास्तविक Number तुलना में बहुत बड़ा हो सकता है। वर्तमान में रनटाइम सिस्टम अक्सर, लेकिन हमेशा नहीं, एक मूल्य चुनता है जो कि एक शक्ति है 2. यह, हालांकि, भविष्य में बदला जा सकता है। चुना गया वास्तविक मूल्य erlang:system_info(port_limit) को कॉल करके चेक किया जा सकता है।

सामान्य रूप से उपयोग किया जाने वाला डिफ़ॉल्ट मान 65536 । हालाँकि, यदि रनटाइम सिस्टम अधिकतम फ़ाइल डिस्क्रिप्टर की मात्रा निर्धारित करने में सक्षम है, जिसे इसे खोलने की अनुमति है और यह मान 65536 से बड़ा है, तो चुना गया मान फ़ाइल डिस्क्रिप्टर की अधिकतम मात्रा के बराबर या उससे अधिक हो जाएगा। खुल गया।

विंडोज पर डिफ़ॉल्ट मान 8196 सेट होता है क्योंकि सामान्य OS सीमाएं सेट की जाती हैं जो कि अधिकांश मशीनें संभाल सकती हैं।

+R ReleaseNumber

संगतता मोड सेट करता है।

वितरण तंत्र डिफ़ॉल्ट रूप से पिछड़ा संगत नहीं है। यह ध्वज एमुलेटर को संगतता मोड में पहले के ReleaseNumber / ओटीपी रिलीज़ ReleaseNumber साथ सेट करता है। रिलीज संख्या सीमा में होनी चाहिए <current release>-2..<current release> । यह एमुलेटर को सीमित करता है, जिससे एर्लैंग नोड्स (साथ ही C- और जावा नोड्स) के साथ संचार करना संभव हो जाता है जो कि पहले रिलीज होता है।

ध्यान दें

सुनिश्चित करें कि वितरित एर्लांग प्रणाली के सभी नोड्स (एरलैंग-, सी-, और जावा नोड्स) एक ही एर्लांग / ओटीपी रिलीज के हैं, या दो अलग-अलग एर्लैंग / ओटीपी रिलीज एक्स और वाई से हैं, जहां सभी नोड्स में संगतता मोड एक्स है।

+r

फोर्स ईटीएस मेमोरी ब्लॉक को रियललोक पर स्थानांतरित किया जाना चाहिए।

+rg ReaderGroupsLimit

Erlang रनटाइम सिस्टम में पढ़ने के संचालन के लिए अनुकूलित रीड / राइट लॉक द्वारा उपयोग किए जाने वाले पाठक समूहों की संख्या को सीमित करता है। डिफ़ॉल्ट रूप से पाठक समूहों की सीमा 64 है।

जब शेड्यूलरों की संख्या पाठक समूहों की सीमा से कम या बराबर होती है, तो प्रत्येक अनुसूचक का अपना पाठक समूह होता है। जब शेड्यूलर्स की संख्या पाठक समूहों की सीमा से बड़ी होती है, तो शेड्यूलर्स पाठक समूहों को साझा करते हैं। साझा पाठक समूह लॉक लॉक पढ़ते हैं और अनलॉक प्रदर्शन पढ़ते हैं जबकि कई पाठक समूह लॉक प्रदर्शन लिखते हैं। तो, सीमा रीड ऑपरेशंस के लिए प्रदर्शन और लिखने के संचालन के लिए प्रदर्शन के बीच एक व्यापार है। प्रत्येक पाठक समूह प्रत्येक रीड / राइट लॉक में 64 बाइट खाता है।

ध्यान दें कि साझा रीडर समूहों का उपयोग करने वाला एक रनटाइम सिस्टम +sbt तक लाभान्वित होता है, क्योंकि पाठक समूहों को अनुसूचियों के बीच बेहतर तरीके से वितरित किया जाता है।

+S Schedulers:SchedulerOnline

ऑनलाइन बनाने के लिए शेड्यूलर थ्रेड्स की संख्या और शेड्यूलर थ्रेड्स सेट करता है। दोनों मानों के लिए अधिकतम 1024 है। यदि इरलांग रनटाइम सिस्टम कॉन्फ़िगर किए गए तार्किक प्रोसेसर और उपलब्ध तार्किक प्रोसेसर की संख्या को निर्धारित करने में सक्षम है, तो Schedulers गए तार्किक प्रोसेसर के लिए Schedulers डिफॉल्ट करता है, और लॉजिकल प्रोसेसर को SchedulersOnline डिफॉल्ट उपलब्ध है; अन्यथा डिफ़ॉल्ट मान हैं 1. Schedulers छोड़ा जा सकता है यदि :SchedulerOnline और इसके विपरीत नहीं है। erlang:system_flag(schedulers_online, SchedulersOnline) माध्यम से ऑनलाइन शेड्यूल करने वालों की संख्या को रनटाइम में बदला जा सकता है।

यदि Schedulers या SchedulersOnline को ऋणात्मक संख्या के रूप में निर्दिष्ट किया जाता है, तो मान क्रमशः उपलब्ध तार्किक प्रोसेसर या तार्किक प्रोसेसर की डिफ़ॉल्ट संख्या से घटाया जाता है।

शेड्यूलर थ्रेड्स या शेड्यूलर थ्रेड्स की संख्या को क्रमशः शेड्यूलर थ्रेड्स या शेड्यूलर थ्रेड्स के लिए मान 0 निर्दिष्ट करता है, इसके डिफ़ॉल्ट मान पर।

+SP SchedulersPercentage:SchedulersOnlinePercentage

+S समान, लेकिन उपलब्ध तार्किक प्रोसेसर के आधार पर शेड्यूलर थ्रेड्स की संख्या सेट करने के लिए प्रतिशत का उपयोग करता है, और लॉजिकल प्रोसेसर उपलब्ध के आधार पर ऑनलाइन सेट करने के लिए शेड्यूलर थ्रेड्स उपलब्ध कराता है। निर्दिष्ट मान होना चाहिए>> 0. उदाहरण के लिए, +SP 50:25 लॉजिकल प्रोसेसर के शेड्यूलर थ्रेड्स की संख्या को कॉन्फ़िगर किए गए 50% तक सेट करता है, और शेड्यूलर थ्रेड्स की संख्या ऑनलाइन उपलब्ध 25% तार्किक प्रोसेसर तक पहुंचती है। SchedulersPercentage को छोड़ा जा सकता है यदि :SchedulersOnlinePercentage नहीं और इसके विपरीत है। erlang:system_flag(schedulers_online, SchedulersOnline) माध्यम से ऑनलाइन शेड्यूल करने वालों की संख्या को रनटाइम में बदला जा सकता है।

यह विकल्प +S सेटिंग्स के साथ इंटरैक्ट करता है। उदाहरण के लिए, एक सिस्टम पर 8 तार्किक कोर कॉन्फ़िगर किए गए और 8 तार्किक कोर उपलब्ध हैं, विकल्पों का संयोजन +S 4:4 +SP 50:25 (या तो क्रम में) 2 अनुसूचक धागे (4 का 50%) और 1 में परिणाम अनुसूचक धागा ऑनलाइन (4 का 25%)।

+SDcpu DirtyCPUSchedulers:DirtyCPUSchedulersOnline

बनाने के लिए गंदे CPU शेड्यूलर थ्रेड्स की संख्या सेट करता है और ऑनलाइन सेट करने के लिए CPU शेड्यूलर थ्रेड्स गंदे करता है। दोनों मानों के लिए अधिकतम 1024 है, और प्रत्येक मान सामान्य अनुसूचियों के लिए सेटिंग्स द्वारा सीमित है:

  • बनाए गए गंदे CPU अनुसूचक सूत्र की संख्या सामान्य अनुसूचक धागे की संख्या से अधिक नहीं हो सकती।
  • गंदे CPU अनुसूचक सूत्र ऑनलाइन की संख्या सामान्य अनुसूचक सूत्र ऑनलाइन की संख्या से अधिक नहीं हो सकती।

जानकारी के लिए, +S और +SP । डिफ़ॉल्ट रूप से, गंदे CPU शेड्यूलर थ्रेड्स की संख्या ने बनाए गए सामान्य शेड्यूलर थ्रेड्स की संख्या के बराबर होती है, और गंदे CPU शेड्यूलर थ्रेड्स की संख्या ऑनलाइन सामान्य शेड्यूलर थ्रेड्स की संख्या के बराबर होती है। DirtyCPUSchedulers छोड़ा जा सकता है यदि :DirtyCPUSchedulersOnline नहीं और इसके विपरीत है। गंदे CPU अनुसूचियों की संख्या ऑनलाइन erlang:system_flag(dirty_cpu_schedulers_online, DirtyCPUSchedulersOnline) माध्यम से रनटाइम में बदली जा सकती है erlang:system_flag(dirty_cpu_schedulers_online, DirtyCPUSchedulersOnline)

साधारण अनुसूचियों पर क्रियान्वित होने वाली प्रक्रियाओं पर प्रभाव को सीमित करने के लिए गंदे CPU अनुसूचियों की मात्रा सामान्य अनुसूचियों की मात्रा से सीमित है। यदि गंदे सीपीयू शेड्यूलरों की मात्रा को असीमित होने दिया गया, तो गंदे सीपीयू बाध्य नौकरियां संभावित रूप से सामान्य नौकरियों को भुनाएंगी।

+SDPcpu DirtyCPUSchedulersPercentage:DirtyCPUSchedulersOnlinePercentage

+SDcpu समान लेकिन ऑनलाइन सेट करने के लिए गंदे CPU अनुसूचक सूत्र की संख्या और गंदे CPU अनुसूचक सूत्र की संख्या निर्धारित करने के लिए प्रतिशत का उपयोग करता है। निर्दिष्ट मान होना चाहिए> 0. उदाहरण के लिए, +SDPcpu 50:25 गंदे CPU शेड्यूलर थ्रेड्स की संख्या को कॉन्फ़िगर किए गए तार्किक प्रोसेसर के 50% और उपलब्ध गंदा प्रोसेसर के गंदे CPU शेड्यूलर थ्रेड्स की संख्या को 25% तक उपलब्ध करता है। DirtyCPUSchedulersPercentage को छोड़ा जा सकता है यदि :DirtyCPUSchedulersOnlinePercentage नहीं और इसके विपरीत है। गंदे CPU अनुसूचियों की संख्या ऑनलाइन erlang:system_flag(dirty_cpu_schedulers_online, DirtyCPUSchedulersOnline) माध्यम से रनटाइम में बदली जा सकती है erlang:system_flag(dirty_cpu_schedulers_online, DirtyCPUSchedulersOnline)

यह विकल्प +SDcpu सेटिंग्स के साथ इंटरैक्ट करता है। उदाहरण के लिए, एक सिस्टम पर 8 तार्किक कोर कॉन्फ़िगर किए गए और 8 तार्किक कोर उपलब्ध हैं, विकल्पों का संयोजन +SDcpu 4:4 +SDPcpu 50:25 (या तो क्रम में) 2 गंदे CPU अनुसूचक धागे (4 का 50%) में परिणाम और 1 गंदा सीपीयू अनुसूचक धागा ऑनलाइन (4 का 25%)।

+SDio DirtyIOSchedulers

बनाने के लिए गंदे I / O शेड्यूलर थ्रेड्स की संख्या सेट करता है। वैध सीमा 0-1024 है। डिफ़ॉल्ट रूप से, गंदे I / O शेड्यूलर थ्रेड्स की संख्या 10 है, साथ ही async thread pool में थ्रेड्स की डिफ़ॉल्ट संख्या।

+SDcpu की मात्रा की तरह गंदे IO अनुसूचियों की मात्रा सामान्य अनुसूचियों की मात्रा तक सीमित नहीं है। चूँकि यह केवल I / O बद्ध कार्य को गंदे I / O शेड्यूलर पर निष्पादित करने के लिए अपेक्षित है। यदि उपयोगकर्ता को गंदे I / O अनुसूचियों पर CPU बाध्य नौकरियों को शेड्यूल करना चाहिए, तो ये कार्य साधारण अनुसूचियों पर निष्पादित होने वाली साधारण नौकरियों को भुना सकते हैं।

+sFlag Value

शेड्यूलिंग विशिष्ट ध्वज।

+sbt BindType

शेड्यूलर बाइंड प्रकार सेट करता है।

शेड्यूलर भी ध्वज +stbt का उपयोग करके बाध्य हो सकते हैं। इन दो झंडों के बीच एकमात्र अंतर यह है कि निम्नलिखित त्रुटियों को कैसे नियंत्रित किया जाता है:

  • शेड्यूलर्स के बाइंडिंग को विशिष्ट प्लेटफ़ॉर्म पर समर्थित नहीं किया गया है।
  • कोई उपलब्ध सीपीयू टोपोलॉजी नहीं। यही है, रनटाइम सिस्टम सीपीयू टोपोलॉजी को स्वचालित रूप से पता लगाने में सक्षम नहीं था, और user-defined CPU topology सेट नहीं किया गया था।

यदि इनमें से कोई भी त्रुटि तब होती है जब +sbt पास किया गया होता है, रनटाइम सिस्टम एक त्रुटि संदेश प्रिंट करता है, और शुरू करने से इनकार करता है। यदि इनमें से कोई भी त्रुटि तब होती है जब +stbt पास किया गया होता है, तो रनटाइम सिस्टम चुपचाप त्रुटि को अनदेखा कर देता है, और अनबाउंड शेड्यूलर्स का उपयोग करना शुरू कर देता है।

मान्य BindType s:

u
unbound - शेड्यूलर तार्किक प्रोसेसर के लिए बाध्य नहीं हैं, अर्थात, ऑपरेटिंग सिस्टम तय करता है कि शेड्यूलर थ्रेड्स कहां निष्पादित होते हैं, और उन्हें कब माइग्रेट करना है। यह डिफ़ॉल्ट है।
ns
no_spread - शेड्यूलर no_spread शेड्यूलर्स हार्डवेयर में यथासंभव बंद होते हैं।
ts
thread_spread - थ्रेड हार्डवेयर थ्रेड्स (जैसे इंटेल के हाइपर-थ्रेड्स) को संदर्भित करता है। कम अनुसूचक पहचानकर्ताओं के साथ समयबद्धक, प्रत्येक कोर के पहले हार्डवेयर धागे से बंधे होते हैं, फिर उच्च अनुसूचक पहचानकर्ता वाले अनुसूचक प्रत्येक कोर के दूसरे हार्डवेयर धागे से बंधे होते हैं, और इसी तरह।
ps
processor_spread - शेड्यूलर thread_spread तरह फैले हुए हैं, लेकिन भौतिक प्रोसेसर चिप्स पर भी।
s
spread - शेड्यूलर जितना संभव हो उतना फैले हुए हैं।
nnts
no_node_thread_spread - no_node_thread_spread तरह, लेकिन यदि कई नॉन-यूनिफ़ॉर्म मेमोरी एक्सेस (NUMA) नोड्स मौजूद हैं, तो शेड्यूलर एक समय में एक NUMA नोड में फैले होते हैं, अर्थात एक NUMA नोड के सभी तार्किक प्रोसेसर अनुक्रम में शेड्यूलर से बंधे होते हैं।
nnps
no_node_processor_spread - जैसे processor_spread , लेकिन यदि कई NUMA नोड मौजूद हैं, तो शेड्यूलर एक समय में एक NUMA नोड में फैले होते हैं, अर्थात, NUMA नोड के सभी तार्किक प्रोसेसर अनुक्रम में शेड्यूलर के लिए बाध्य होते हैं।
tnnps
thread_no_node_processor_spread - thread_spread और no_node_processor_spread का संयोजन। शेड्यूलर NUMA नोड्स में हार्डवेयर थ्रेड्स में फैले हुए हैं, लेकिन शेड्यूलर्स केवल एक समय में एक NUMA नोड में आंतरिक रूप से प्रोसेसर पर फैले हुए हैं।
db
default_bind - बाइंड डिफ़ॉल्ट तरीके को शेड्यूल करता है। thread_no_node_processor_spread (जो भविष्य में बदल सकता है)।

शेड्यूलर्स की बाइंडिंग केवल नए लिनक्स, सोलारिस, फ्रीबीएसडी और विंडोज सिस्टम पर समर्थित है।

यदि कोई सीपीयू टोपोलॉजी तब उपलब्ध नहीं होता है जब ध्वज +sbt संसाधित होता है और BindType u अलावा कोई अन्य प्रकार है, रनटाइम सिस्टम शुरू करने में विफल रहता है। सीपीयू टोपोलॉजी को ध्वज +sct का उपयोग करके परिभाषित किया जा सकता है। ध्यान दें कि ध्वज +sct को कमांड लाइन पर ध्वज +sbt से पहले पारित किया जा सकता है (यदि कोई सीपीयू टोपोलॉजी स्वचालित रूप से पता नहीं चला है)।

रनटाइम सिस्टम डिफॉल्ट रूप से शेड्यूलर्स को तार्किक प्रोसेसर से नहीं बांधता है।

ध्यान दें

यदि एरलांग रनटाइम सिस्टम एकमात्र ऑपरेटिंग सिस्टम प्रक्रिया है जो थ्रेड्स को तार्किक प्रोसेसर से बांधती है, तो यह रनटाइम सिस्टम के प्रदर्शन में सुधार करता है। हालांकि, यदि अन्य ऑपरेटिंग सिस्टम प्रक्रियाएं (उदाहरण के लिए एक और एर्लांग रनटाइम सिस्टम) भी तार्किक प्रोसेसर के लिए थ्रेड्स बांधती हैं, तो इसके बजाय एक प्रदर्शन जुर्माना हो सकता है। यह प्रदर्शन जुर्माना कभी-कभी गंभीर हो सकता है। यदि हां, तो आपको सलाह दी जाती है कि आप शेड्यूलर्स को न बांधें।

कैसे अनुसूचियां बंधे हुए मामले हैं। उदाहरण के लिए, उन स्थितियों में जब ऑनलाइन अनुसूचियों की तुलना में कम चलने वाली प्रक्रियाएं होती हैं, रनटाइम सिस्टम कम अनुसूचक पहचानकर्ताओं के साथ अनुसूचियों में प्रक्रियाओं को स्थानांतरित करने की कोशिश करता है। शेड्यूलर्स जितना अधिक हार्डवेयर में फैला होता है, उतने संसाधन ऐसी स्थितियों में रनटाइम सिस्टम के लिए उपलब्ध होते हैं।

ध्यान दें

यदि कोई अनुसूचक बांधने में विफल रहता है, तो इसे अक्सर चुपचाप नजरअंदाज कर दिया जाता है, क्योंकि वैध तार्किक प्रोसेसर पहचानकर्ताओं को सत्यापित करना हमेशा संभव नहीं होता है। यदि कोई त्रुटि बताई गई है, तो उसे सूचित किया जाता है error_logger । यदि आप यह सत्यापित करना चाहते हैं कि शेड्यूलर्स अनुरोध के अनुसार बाध्य हैं, तो कॉल करें erlang:system_info(scheduler_bindings)

+sbwt none|very_short|short|medium|long|very_long

सेट शेड्यूलर व्यस्त प्रतीक्षा सीमा। के लिए चूक medium । दहलीज यह निर्धारित करती है कि सोने से पहले काम से बाहर दौड़ने के लिए शेड्यूलर्स को कितने समय तक व्यस्त रहना पड़ता है।

ध्यान दें

बिना किसी पूर्व सूचना के किसी भी समय इस झंडे को हटाया या बदला जा सकता है।

+sbwtdcpu none|very_short|short|medium|long|very_long

के रूप में +sbwt लेकिन गंदा CPU अनुसूचियों को प्रभावित करता है। के लिए चूक short

ध्यान दें

बिना किसी पूर्व सूचना के किसी भी समय इस झंडे को हटाया या बदला जा सकता है।

+sbwtdio none|very_short|short|medium|long|very_long

के रूप में +sbwt लेकिन गंदा आईओ अनुसूचियों को प्रभावित करता है। के लिए चूक short

ध्यान दें

बिना किसी पूर्व सूचना के किसी भी समय इस झंडे को हटाया या बदला जा सकता है।

+scl true|false

लोड के शेड्यूलर संघनन को सक्षम या अक्षम करता है। डिफ़ॉल्ट शेड्यूलर द्वारा लोड का संघनन सक्षम किया जाता है। जब सक्षम किया जाता है, तो लोड संतुलन एक भार वितरण के लिए प्रयास करता है, जो पूरी तरह से लोड होने के लिए संभव के रूप में कई शेड्यूलर थ्रेड्स का कारण बनता है (यानी, काम से बाहर भागो) यह लोडिंग माइग्रेट करके पूरा किया जाता है (उदाहरण के लिए, रन करने योग्य प्रक्रियाएं) शेड्यूलरों के एक छोटे समूह में जब शेड्यूलर अक्सर काम से बाहर निकलते हैं। जब अक्षम किया जाता है, तो आवृत्ति जिसके साथ शेड्यूलर काम करते हैं, लोड संतुलन तर्क द्वारा ध्यान में नहीं लिया जाता है।

+scl false के समान है +sub true , लेकिन +sub true यह भी अनुसूचकियों के बीच अनुसूचक के उपयोग को संतुलित करता है।

+sct CpuTopology
  • <Id> = integer(); when 0 =< <Id> =< 65535
  • <IdRange> = <Id>-<Id>
  • <IdOrIdRange> = <Id> | <IdRange>
  • <IdList> = <IdOrIdRange>,<IdOrIdRange> | <IdOrIdRange>
  • <LogicalIds> = L<IdList>
  • <ThreadIds> = T<IdList> | t<IdList>
  • <CoreIds> = C<IdList> | c<IdList>
  • <ProcessorIds> = P<IdList> | p<IdList>
  • <NodeIds> = N<IdList> | n<IdList>
  • <IdDefs> = <LogicalIds><ThreadIds><CoreIds><ProcessorIds><NodeIds> | <LogicalIds><ThreadIds><CoreIds><NodeIds><ProcessorIds>
  • CpuTopology = <IdDefs>:<IdDefs> | <IdDefs>

उपयोगकर्ता द्वारा परिभाषित सीपीयू टोपोलॉजी सेट करता है। उपयोगकर्ता द्वारा परिभाषित सीपीयू टोपोलॉजी किसी भी स्वचालित रूप से पाए गए सीपीयू टोपोलॉजी से आगे निकल जाती है। सीपीयू टोपोलॉजी का उपयोग कब किया जाता है +sbt

अपरकेस अक्षर वास्तविक पहचानकर्ताओं को दर्शाता है और निचला अक्षर नकली पहचानकर्ताओं को दर्शाता है जो केवल टोपोलॉजी के विवरण के लिए उपयोग किया जाता है। वास्तविक पहचानकर्ताओं के रूप में पारित किए गए पहचानकर्ता रनटाइम सिस्टम द्वारा उपयोग किए जा सकते हैं जब विशिष्ट हार्डवेयर तक पहुंचने का प्रयास किया जाता है; यदि वे गलत हैं तो व्यवहार अपरिभाषित है। नकली तार्किक CPU पहचानकर्ताओं को स्वीकार नहीं किया जाता है, क्योंकि वास्तविक तार्किक CPU पहचानकर्ताओं के बिना CPU टोपोलॉजी को परिभाषित करने का कोई मतलब नहीं है। थ्रेड, कोर, प्रोसेसर और नोड आइडेंटिफ़ायर को छोड़ा जा सकता है। यदि छोड़ा गया है, तो थ्रेड आईडी डिफॉल्ट करता है t0 , कोर आईडी डिफॉल्ट करता है c0 , प्रोसेसर आईडी डिफॉल्ट करता है p0 , और नोड आईडी अपरिभाषित रह जाता है। या तो प्रत्येक तार्किक प्रोसेसर केवल एक NUMA नोड से संबंधित होना चाहिए, या कोई भी तार्किक प्रोसेसर किसी NUMA नोड से संबंधित नहीं होना चाहिए।

दोनों बढ़ते और घटते <IdRange> s की अनुमति है।

NUMA नोड पहचानकर्ता सिस्टम चौड़ा है। यही है, सिस्टम पर प्रत्येक NUMA नोड में एक विशिष्ट पहचानकर्ता होना चाहिए। प्रोसेसर पहचानकर्ता भी सिस्टम व्यापक हैं। कोर पहचानकर्ता प्रोसेसर व्यापक हैं। थ्रेड आइडेंटिफायर कोर वाइड होते हैं।

पहचानकर्ता प्रकारों का क्रम सीपीयू टोपोलॉजी के पदानुक्रम का अर्थ है। मान्य आदेश निम्नानुसार हैं:

  • <LogicalIds><ThreadIds><CoreIds><ProcessorIds><NodeIds> , अर्थात्, थ्रेड कोर का एक हिस्सा है जो एक प्रोसेसर का हिस्सा है, जो एक NUMA नोड का हिस्सा है।

  • <LogicalIds><ThreadIds><CoreIds><NodeIds><ProcessorIds> , अर्थात्, थ्रेड कोर का एक हिस्सा है जो NUMA नोड का हिस्सा है, जो एक प्रोसेसर का हिस्सा है।

एक सीपीयू टोपोलॉजी में प्रोसेसर बाहरी, और प्रोसेसर आंतरिक NUMA नोड्स शामिल हो सकते हैं जब तक कि प्रत्येक तार्किक प्रोसेसर केवल एक NUMV नोड से संबंधित हो। यदि <ProcessorIds> छोड़ा गया है, तो इसकी डिफ़ॉल्ट स्थिति पहले है <NodeIds> । यही है, डिफ़ॉल्ट प्रोसेसर बाहरी NUMA नोड्स है।

यदि पहचानकर्ताओं की एक सूची में उपयोग किया जाता है <IdDefs> :

  • <LogicalIds> पहचानकर्ताओं की एक सूची होनी चाहिए।
  • कम से कम एक अन्य पहचानकर्ता प्रकार के अलावा पहचानकर्ताओं की <LogicalIds> एक सूची भी होनी चाहिए।
  • पहचानकर्ताओं की सभी सूचियों को समान पहचानकर्ताओं का उत्पादन करना चाहिए।

एक साधारण उदाहरण। एक एकल क्वाड कोर प्रोसेसर को निम्नानुसार वर्णित किया जा सकता है:

% erl +sct L0-3c0-3
1> erlang:system_info(cpu_topology).
[{processor,[{core,{logical,0}},
             {core,{logical,1}},
             {core,{logical,2}},
             {core,{logical,3}}]}]

दो क्वाड कोर प्रोसेसर के साथ अधिक जटिल उदाहरण, प्रत्येक प्रोसेसर अपने स्वयं के NUMA नोड में। तार्किक प्रोसेसर का क्रम थोड़ा अजीब है। यह पहचानकर्ता सूचियों का एक बेहतर उदाहरण देता है:

% erl +sct L0-1,3-2c0-3p0N0:L7,4,6-5c0-3p1N1
1> erlang:system_info(cpu_topology).
[{node,[{processor,[{core,{logical,0}},
                    {core,{logical,1}},
                    {core,{logical,3}},
                    {core,{logical,2}}]}]},
 {node,[{processor,[{core,{logical,7}},
                    {core,{logical,4}},
                    {core,{logical,6}},
                    {core,{logical,5}}]}]}]

जब तक असली पहचानकर्ता सही हैं, तब तक सीपीयू टोपोलॉजी पास करना ठीक है जो सीपीयू टोपोलॉजी का सही विवरण नहीं है। जब देखभाल के साथ उपयोग किया जाता है तो यह बहुत उपयोगी हो सकता है। यह अपने शेड्यूलरों को बांधने के लिए एमुलेटर को ट्रिक करना चाहता है। उदाहरण के लिए, यदि आप एक ही मशीन पर कई एरलंग रनटाइम सिस्टम चलाना चाहते हैं, तो आप उपयोग किए जाने वाले शेड्यूलरों की संख्या को कम करना चाहते हैं और सीपीयू टोपोलॉजी में हेरफेर करना चाहते हैं ताकि वे विभिन्न तार्किक सीपीयू से बंधे। एक उदाहरण, क्वाड कोर मशीन पर दो एरलंग रनटाइम सिस्टम के साथ:

% erl +sct L0-3c0-3 +sbt db +S3:2 -detached -noinput -noshell -sname one
% erl +sct L3-0c0-3 +sbt db +S3:2 -detached -noinput -noshell -sname two

इस उदाहरण में, प्रत्येक रनटाइम सिस्टम में प्रत्येक ऑनलाइन दो शेड्यूलर होते हैं, और सभी शेड्यूलर ऑनलाइन अलग-अलग कोर पर चलेंगे। यदि हम एक रनटाइम सिस्टम पर एक अनुसूचक को ऑनलाइन बदलते हैं, और दूसरे पर तीन अनुसूचियों को ऑनलाइन करते हैं, तो सभी अनुसूचकियां ऑनलाइन अभी भी अलग-अलग कोर पर चलेंगी।

ध्यान दें कि एक नकली सीपीयू टोपोलॉजी जो यह नहीं दर्शाती है कि वास्तविक सीपीयू टोपोलॉजी कैसा दिखता है, रनटाइम सिस्टम के प्रदर्शन को कम करने की संभावना है।

अधिक जानकारी के लिए, देखें erlang:system_info(cpu_topology)

+sfwi Interval

शेड्यूलर-मजबूर वॉकअप अंतराल सेट करता है। सभी रन कतार प्रत्येक Interval मिलीसेकंड स्कैन की जाती हैं । जब सिस्टम में स्लीपिंग शेड्यूलर होते हैं, तो एक शेड्यूलर प्रत्येक गैर-खाली रन कतार के लिए जाग जाता है। Interval डिफ़ॉल्ट 0 , जिसका अर्थ है कि यह सुविधा अक्षम है।

ध्यान दें

यह सुविधा लंबे समय से निष्पादित देशी कोड के लिए एक अस्थायी समाधान के रूप में पेश की गई है, और देशी कोड जो ओटीपी में ठीक से कटौती नहीं करता है। जब ये बग्स ठीक हो जाएंगे, तो यह झंडा हटा दिया जाएगा।

+spp Bool

पोर्ट समानांतरवाद के लिए डिफ़ॉल्ट शेड्यूलर संकेत सेट करता है। यदि यह सेट किया जाता है true , तो वर्चुअल मशीन शेड्यूल पोर्ट को तब काम करता है जब यह सिस्टम में समानता को बेहतर बनाता है। यदि सेट किया जाता है false , तो वर्चुअल मशीन समानांतर कार्यों की कीमत पर विलंबता में सुधार करते हुए, तुरंत पोर्ट कार्य करने की कोशिश करती है। के लिए डिफ़ॉल्ट false । उपयोग किए गए डिफ़ॉल्ट को कॉल करके रनटाइम में निरीक्षण किया जा सकता है erlang:system_info(port_parallelism) । डिफ़ॉल्ट विकल्प पास करके बंदरगाह निर्माण पर अधिरोहित जा सकता है parallelism के लिए erlang:open_port/2

+sss size

शेड्यूल किए गए थ्रेड्स के लिए, स्टैक का आकार, किलोवाट में, सुझाया गया है। वैध सीमा 20-8192 किलोवाट है। डिफ़ॉल्ट सुझाए गए स्टैक का आकार 128 किलोवाट है।

+sssdcpu size

गंदे सीपीयू शेड्यूलर थ्रेड्स के लिए, स्टैक आकार को किलोवाट में सुझाया गया है। वैध सीमा 20-8192 किलोवाट है। डिफ़ॉल्ट सुझाए गए स्टैक का आकार 40 किलोवाट है।

+sssdio size

गंदे आईओ शेड्यूलर थ्रेड्स के लिए, स्टैक का आकार किलो में, स्टैक का आकार। वैध सीमा 20-8192 किलोवाट है। डिफ़ॉल्ट सुझाए गए स्टैक का आकार 40 किलोवाट है।

+stbt BindType

शेड्यूलर बाइंड प्रकार सेट करने की कोशिश करता है। +sbt कुछ त्रुटियों को कैसे हैंडल किया जाता है, इसके अलावा ध्वज । अधिक जानकारी के लिए, देखें +sbt

+sub true|false

scheduler utilization लोड के संतुलन को सक्षम या अक्षम करता है । डिफ़ॉल्ट शेड्यूलर उपयोग द्वारा संतुलन को अक्षम कर दिया जाता है और इसके बजाय लोड के शेड्यूलर संघनन को सक्षम किया जाता है, जो एक लोड वितरण के लिए प्रयास करता है जो पूरी तरह से लोड किए जाने के लिए संभव के रूप में कई शेड्यूलर थ्रेड्स का कारण बनता है (जो कि काम से बाहर नहीं है)। जब अनुसूचक उपयोग संतुलन को सक्षम किया जाता है, तो सिस्टम इसके बजाय अनुसूचियों के बीच अनुसूचक उपयोग को संतुलित करने की कोशिश करता है। यही है, सभी अनुसूचियों पर समान अनुसूचक उपयोग के लिए प्रयास करें।

+sub true केवल उन प्रणालियों पर समर्थित है जहां रनटाइम सिस्टम का पता लगाता है और एक उच्च-रिज़ॉल्यूशन घड़ी का एक मोनोटोनिक रूप से उपयोग करता है। अन्य प्रणालियों पर, रनटाइम सिस्टम शुरू करने में विफल रहता है।

+sub true तात्पर्य है +scl false । के बीच का अंतर +sub true और +scl false वह यह है कि +scl false अनुसूचक उपयोग को संतुलित करने की कोशिश नहीं करता।

+swct very_eager|eager|medium|lazy|very_lazy

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

ध्यान दें

बिना किसी पूर्व सूचना के किसी भी समय इस झंडे को हटाया या बदला जा सकता है।

+sws default|legacy

शेड्यूलर वेकअप रणनीति सेट करता है। डिफ़ॉल्ट रणनीति ERTS 5.10 (Erlang / OTP R16A) में बदल गई। इस रणनीति को proposal Erlang / OTP R15 के रूप में जाना जाता था । legacy रणनीति के लिए और R15 सहित R13 से डिफ़ॉल्ट के रूप में इस्तेमाल किया गया था।

ध्यान दें

बिना किसी पूर्व सूचना के किसी भी समय इस झंडे को हटाया या बदला जा सकता है।

+swt very_low|low|medium|high|very_high

शेड्यूलर वेकअप थ्रेशोल्ड सेट करता है। के लिए चूक medium । थ्रेसहोल्ड यह निर्धारित करता है कि सोते हुए शेड्यूलर्स को कब जगाया जाए जब वर्तमान में जाग्रत शेड्यूलर्स की तुलना में अधिक काम हो सकता है। कम थ्रेशोल्ड पहले वेकअप का कारण बनता है, और एक उच्च सीमा बाद में वेकअप होता है। शुरुआती वेकअप कई शेड्यूलर पर काम तेजी से वितरित करते हैं, लेकिन काम शेड्यूलर्स के बीच अधिक आसानी से उछाल देता है।

ध्यान दें

बिना किसी पूर्व सूचना के किसी भी समय इस झंडे को हटाया या बदला जा सकता है।

+swtdcpu very_low|low|medium|high|very_high

के रूप में +swt लेकिन गंदा CPU अनुसूचियों को प्रभावित करता है। के लिए चूक medium

ध्यान दें

बिना किसी पूर्व सूचना के किसी भी समय इस झंडे को हटाया या बदला जा सकता है।

+swtdio very_low|low|medium|high|very_high

के रूप में +swt लेकिन गंदा आईओ अनुसूचियों को प्रभावित करता है। के लिए चूक medium

ध्यान दें

बिना किसी पूर्व सूचना के किसी भी समय इस झंडे को हटाया या बदला जा सकता है।

+t size

वर्चुअल मशीन हैंडल कर सकते हैं परमाणुओं की अधिकतम संख्या सेट करता है। 1,048,576 में गिरावट।

+T Level

संशोधित समय को सक्षम करता है और संशोधित समय स्तर को निर्धारित करता है। वैध सीमा 0-9 है। रनटाइम सिस्टम का समय बदल जाता है। एक उच्च स्तर का मतलब आमतौर पर निम्न स्तर की तुलना में अधिक परिवर्तन होता है। समय से संबंधित बगों को खोजने के लिए समय बदलना बहुत उपयोगी हो सकता है।

संशोधित समय निम्नलिखित को प्रभावित करता है:

प्रक्रिया स्पॉनिंग
एक प्रक्रिया बुला spawn , spawn_link , spawn_monitor , या spawn_opt कॉल पूरा करने के बाद तुरंत बाहर निर्धारित है। जब उच्च संशोधित समय स्तरों का उपयोग किया जाता है, तो कॉलर को शेड्यूल होने के बाद भी थोड़ी देर के लिए सो जाता है।
प्रसंग में कमी
किसी प्रक्रिया को कम करने से पहले इसका उपयोग करने की अनुमति दी जाती है, इससे पहले कि इसे बढ़ाया या घटाया जाए।
इनपुट में कटौती
I / O की जाँच करने से पहले किए गए रिडक्शन की संख्या को बढ़ाया या घटाया जाता है।
ध्यान दें

जब संशोधित समय सक्षम किया जाता है तो प्रदर्शन प्रभावित होता है। यह ध्वज केवल परीक्षण और डीबगिंग के लिए है।

return_to और return_from ट्रेस संदेश खो जाते हैं जब स्पॉन बीआईएफ पर ट्रेस होता है।

बिना किसी पूर्व सूचना के किसी भी समय इस झंडे को हटाया या बदला जा सकता है।

+v

शब्दाडंबरपूर्ण।

+V

एमुलेटर इसके वर्जन नंबर को प्रिंट करता है।

+W w | i | e

के लिए चेतावनी संदेशों की मैपिंग सेट करता है error_logger । चेतावनी रेंजर के उपयोग से त्रुटि लकड़हारे को भेजे गए संदेशों को त्रुटियों ( +W e ), चेतावनियों ( +W w ), या सूचना रिपोर्टों ( +W i ) में मैप किया जा सकता है । चेतावनी के लिए चूक। वर्तमान मानचित्रण का उपयोग करके पुनर्प्राप्त किया जा सकता है error_logger:warning_map/0 । अधिक जानकारी के लिए, error_logger:warning_map/0 कर्नेल में देखें ।

+zFlag Value

विविध झंडे:

+zdbbl size

dist_buf_busy_limit किलोबाइट में वितरण बफर व्यस्त सीमा ( ) सेट करता है । वैध सीमा 1-2097151 है। चूक 1024 तक।

एक बड़ी बफर सीमा प्रक्रियाओं को वितरण पर अधिक आउटगोइंग संदेशों को बफर करने की अनुमति देती है। जब बफर सीमा समाप्त हो गई है, तो भेजने की प्रक्रिया तब तक निलंबित रहेगी जब तक कि बफर का आकार सिकुड़ नहीं जाता। प्रति वितरण चैनल बफर सीमा है। एक उच्च सीमा कम विलंबता और उच्चतर थ्रूपुट उच्चतर स्मृति उपयोग की कीमत पर देती है।

+zdntgc time

विलंबित नोड टेबल कचरा संग्रह समय ( delayed_node_table_gc ) सेकंड में सेट करता है । वैध मान infinity या तो 0-100000000 की सीमा में पूर्णांक हैं। 60 की कमी।

नोड तालिका प्रविष्टियाँ जिन्हें कम से कम समय के लिए तालिका में संदर्भित नहीं किया जाता है, यह पैरामीटर निर्धारित करता है। भाषाई बार-बार होने वाली तालिकाओं में विलोपन और सम्मिलन को रोकता है।

पर्यावरण चर

ERL_CRASH_DUMP

यदि एमुलेटर को क्रैश डंप लिखना है, तो इस वेरिएबल का मान क्रैश डंप फ़ाइल का फ़ाइल नाम है। यदि चर सेट नहीं है, तो क्रैश डंप फ़ाइल का नाम erl_crash.dump वर्तमान निर्देशिका में है।

ERL_CRASH_DUMP_NICE

यूनिक्स सिस्टम : यदि एमुलेटर को क्रैश डंप लिखने की आवश्यकता है, तो यह इस चर के मूल्य का उपयोग प्रक्रिया के लिए अच्छा मूल्य निर्धारित करने के लिए करता है, इस प्रकार इसकी प्राथमिकता कम हो जाती है। मान्य सीमा 1-39 है (उच्च मान 39 के साथ बदल दिए जाते हैं)। उच्चतम मूल्य, 39, प्रक्रिया को सबसे कम प्राथमिकता देता है।

ERL_CRASH_DUMP_SECONDS

यूनिक्स सिस्टम : यह चर सेकंड की संख्या देता है जो एमुलेटर को क्रैश डंप लिखने में खर्च करने की अनुमति देता है। जब दिए गए सेकंड की संख्या समाप्त हो जाती है, तो एमुलेटर को समाप्त कर दिया जाता है।

ERL_CRASH_DUMP_SECONDS=0
यदि चर 0 सेकंड के लिए सेट है , तो रनटाइम सिस्टम क्रैश डंप फ़ाइल लिखने का प्रयास भी नहीं करता है। यह केवल समाप्त करता है। यह डिफ़ॉल्ट है यदि विकल्प -heart को पास कर दिया गया है erl और ERL_CRASH_DUMP_SECONDS सेट नहीं किया गया है।
ERL_CRASH_DUMP_SECONDS=S
यदि चर एक सकारात्मक मान पर सेट है S , S तो क्रैश डंप फ़ाइल को पूरा करने के लिए सेकंड के लिए प्रतीक्षा करें और फिर एक SIGALRM संकेत के साथ रनटाइम सिस्टम को समाप्त करता है ।
ERL_CRASH_DUMP_SECONDS=-1
एक नकारात्मक मान रनटाइम सिस्टम को अनिश्चित काल तक प्रतीक्षा करने का कारण बनता है जब तक कि क्रैश डंप फ़ाइल पूरी तरह से नहीं लिखी गई है। यह डिफ़ॉल्ट है यदि विकल्प -heart को पारित नहीं किया गया है erl और ERL_CRASH_DUMP_SECONDS सेट नहीं किया गया है।

यह भी देखें heart(3)

ERL_CRASH_DUMP_BYTES

यह चर बाइट्स में क्रैश डंप फ़ाइल का अधिकतम आकार सेट करता है। यदि यह सीमा पार हो जाती है तो क्रैश डंप को छोटा कर दिया जाएगा। यदि चर सेट नहीं है, तो डिफ़ॉल्ट रूप से कोई आकार सीमा लागू नहीं की जाती है। यदि चर सेट किया जाता है 0 , तो रनटाइम सिस्टम क्रैश डंप फ़ाइल लिखने का प्रयास भी नहीं करता है।

ERTS 8.1.2 (Erlang / OTP 19.2) में प्रस्तुत किया गया।

ERL_AFLAGS

इस चर की सामग्री के लिए कमांड लाइन की शुरुआत में जोड़ा जाता है erl

ध्वज -extra का उपचार एक विशेष तरीके से किया जाता है। इसका दायरा पर्यावरण चर सामग्री के अंत में समाप्त होता है। एक -extra ध्वज का अनुसरण करने वाले तर्क कमांड लाइन पर अनुभाग में ले जाया जाता है -extra , अर्थात एक -extra ध्वज के बाद कमांड लाइन का अंत ।

ERL_ZFLAGS तथा ERL_FLAGS

इन चरों की सामग्री को कमांड लाइन के अंत में जोड़ा जाता है erl

ध्वज -extra का उपचार एक विशेष तरीके से किया जाता है। इसका दायरा पर्यावरण चर सामग्री के अंत में समाप्त होता है। एक -extra ध्वज का अनुसरण करने वाले तर्क कमांड लाइन पर अनुभाग में ले जाया जाता है -extra , अर्थात एक -extra ध्वज के बाद कमांड लाइन का अंत ।

ERL_LIBS

अतिरिक्त लाइब्रेरी निर्देशिकाओं की एक सूची शामिल करता है जो कोड सर्वर अनुप्रयोगों की खोज करता है और कोड पथ में जोड़ता है; देखते हैं code(3)

ERL_EPMD_ADDRESS

IP पते की अल्पविराम से अलग की गई सूची पर सेट किया जा सकता है, जिस स्थिति में epmd डेमन केवल निर्दिष्ट पते (तों) पर और लूपबैक पते पर सुनता है (जो कि निर्दिष्ट नहीं किया गया है तो सूची में जोड़ा गया है)।

ERL_EPMD_PORT

के साथ संचार करते समय उपयोग करने के लिए पोर्ट नंबर हो सकता है epmd । अधिकांश मामलों में डिफ़ॉल्ट पोर्ट ठीक काम करता है। एक ही होस्ट पर सह-अस्तित्व के लिए स्वतंत्र समूहों के नोड्स को अनुमति देने के लिए एक अलग पोर्ट निर्दिष्ट किया जा सकता है। एक क्लस्टर में सभी नोड्स को समान epmd पोर्ट संख्या का उपयोग करना चाहिए।

सिग्नल

यूनिक्स प्रणालियों पर, एरलंग रनटाइम दो प्रकार के संकेतों की व्याख्या करेगा।

SIGUSR1

एक SIGUSR1 संकेत एक क्रैश डंप बाध्य करती है।

SIGTERM

A प्रक्रिया को संदेश SIGTERM देगा । यह एक कॉल के बराबर है । stop init init:stop/0

ERTS 8.3 (Erlang / OTP 19.3) में प्रस्तुत किया गया

संकेत SIGUSR2 आंतरिक उपयोग के लिए आरक्षित है। कोई अन्य संकेत नहीं संभाला जाता है।

विन्यास

स्टार्टअप पर डिफ़ॉल्ट व्यवहार को बदलने के लिए मानक Erlang / OTP सिस्टम को पुन: कॉन्फ़िगर किया जा सकता है।

.erlang स्टार्टअप फ़ाइल

जब Erlang / OTP प्रारंभ किया जाता है, तो सिस्टम .erlang उपयोगकर्ता के होम डायरेक्टरी में एक फ़ाइल की खोज करता है।

यदि कोई .erlang फ़ाइल पाई जाती है, तो यह मान्य Erlang अभिव्यक्तियों को शामिल करने के लिए माना जाता है। इन अभिव्यक्तियों का मूल्यांकन किया जाता है जैसे कि वे शेल में इनपुट थे।

एक विशिष्ट .erlang फ़ाइल में उदाहरण के लिए खोज पथ का एक सेट होता है:

io:format("executing user profile in HOME/.erlang\n",[]).
code:add_path("/home/calvin/test/ebin").
code:add_path("/home/hobbes/bigappl-1.2/ebin").
io:format(".erlang rc finished\n",[]).    
user_default और shell_default

खोल में कार्य है कि एक मॉड्यूल नाम दिया नहीं कर रहे हैं, कार्यात्मक वस्तुओं (funs), बिल्ट-इन कार्य (BIFS) हो सकता है या मॉड्यूल के हैं मान लिया जाता user_default या shell_default

निजी शेल कमांड को शामिल करने के लिए, उन्हें एक मॉड्यूल में परिभाषित करें user_default और .erlang फ़ाइल में पहली पंक्ति के रूप में निम्न तर्क जोड़ें :

code:load_abs("..../user_default").    
erl

यदि सामग्री .erlang को बदल दिया जाता है और निजी संस्करण user_default को परिभाषित किया जाता है, तो एरलंग / ओटीपी वातावरण को अनुकूलित किया जा सकता है। स्टार्टअप स्क्रिप्ट में कमांड-लाइन तर्कों की आपूर्ति करके अधिक शक्तिशाली परिवर्तन किए जा सकते हैं erl । अधिक जानकारी के लिए, देखें init(3)

यह भी देखें

epmd , erl_prim_loader(3) , erts_alloc(3) , init(3) , application(3) , auth(3) , code(3) , erl_boot_server(3) , heart(3) , net_kernel(3) , make(3)

Original text