আমি কীভাবে "/ sys / কার্নেল / মিমি / স্বচ্ছ_হেজপেজ / সক্ষম" সংশোধন করব


50

আমি মঙ্গডব 3.0 ব্যবহার করি এবং আমি একটি সতর্কতা পাই:

MongoDB shell version: 3.0.0
connecting to: test
Server has startup warnings: 
2015-03-13T16:28:29.405+0800 I CONTROL  [initandlisten] 
2015-03-13T16:28:29.406+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-03-13T16:28:29.406+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-03-13T16:28:29.406+0800 I CONTROL  [initandlisten] 
2015-03-13T16:28:29.407+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-03-13T16:28:29.407+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-03-13T16:28:29.407+0800 I CONTROL  [initandlisten]

~# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

~# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never

আমি ইকো ব্যবহার করার চেষ্টা করি, তবে এটি স্থায়ী নয়, পুনরায় বুটের পরে এটি পুনরায় সেট করা হবে।

echo never > /sys/kernel/mm/transparent_hugepage/defrag

আমি কীভাবে /sys/kernel/mm/transparent_hugepage/enabledস্থায়ীভাবে সংশোধন করব ?


1
নীচে ভাল উত্তর থাকতে পারে, তবে আইএমওর জন্য আপনার অবশ্যই মঙ্গোডিবি

উত্তর:


70

আপনি পারেন

  1. sysfsutilsপ্যাকেজ ইনস্টল করুন :

    sudo apt install sysfsutils
    
  2. এবং সেটিংয়ের সাথে একটি লাইন যুক্ত করুন /etc/sysfs.conf:

    kernel/mm/transparent_hugepage/enabled = never
    

এটিই সবচেয়ে পরিষ্কার সমাধান, কারণ এটি কাস্টম স্টার্ট-আপ স্ক্রিপ্টগুলির উপর নির্ভর না করে সমস্ত সিস্টেমে কনফিগারেশনকে এক জায়গায় রাখে। স্ক্রিপ্টগুলি এবং শর্তসাপেক্ষ অভিব্যক্তি সহ অন্যান্য উত্তরগুলি উপযুক্ত, যদি আপনি না জেনে থাকেন যে কার্নেলটি কোন পথটি দিয়ে এই সেটিংটি প্রকাশ করবে, অর্থাৎ আপনার যদি আক্রান্ত মেশিনে কার্নেল সংস্করণটি চলমান সম্পর্কে মোটামুটি ধারণা নাও রাখেন।


4
এটি আমার জন্য উবুন্টু 14.04 এডাব্লুএস ইসি 2 উদাহরণে কিছুই করেনি। আমি সিসফস.কনফ সম্পর্কে খুব বেশি জানি না তবে এটি উবুন্টু সমর্থিত কনফিগারেশন হিসাবে উপস্থিত বলে মনে হচ্ছে, তবুও ফাইলটি আমাদের সিস্টেমে আগে উপস্থিত ছিল না, এবং এটি যুক্ত করা এবং পুনরায় চালনার ফলে মঙ্গো আউটপুট সতর্কতাগুলি মোটেও বদলেনি। নীচে মাটিজার্মেকে 1 এর পরামর্শ দিয়ে চেষ্টা করেছেন, 'ডিফ্রেগ' সতর্কতা এখনও উপস্থিত রয়েছে। সরকারী মঙ্গো ডক্স ইন্ডি স্ক্রিপ্ট উভয় সতর্কতা সরিয়ে দিয়েছে।
নীক

এর আউটপুট কি cat /sys/kernel/mm/transparent_hugepage/enabled? এটি কি আদৌ বিদ্যমান? sysfs.confবুট দ্বারা সাধারণত মূল্যায়ন করা হয় /etc/init.d/sysutils। এটি সক্ষম? কি হবে, যখন আপনি প্রার্থনা /etc/init.d/sysutils start?
ডেভিড ফোস্টার

3
আমার কাছে sysfs.confফাইলও নেই এবং /etc/init.d/sysutils। উবুন্টু 16.04
এইচএক্স

1
@ উনহামার: না, দুজনের আলাদা স্কোপ রয়েছে। sysctlসেটিংসের জন্য যা আপনি কার্নেল পরামিতিগুলি দিয়েও অর্জন করতে পারেন; sysfs.confপ্রবেশের জন্য হয় /sys
ডেভিড ফোস্টার

1
@ নাভসোক: আপনার যদি নতুন বা ফলো-আপ প্রশ্ন থাকে তবে আপনি কি দয়া করে একটি নতুন প্রশ্ন খুলতে পারবেন ? মন্তব্য বিভাগটি উপযুক্ত নয় বা নতুন প্রশ্ন বা বর্ধিত আলোচনার জন্য। আপনার দৃষ্টি আকর্ষণ করার জন্য আমাকে বিজ্ঞপ্তি সহ একটি মন্তব্য পাঠাতে স্বাগতম। ধন্যবাদ।
ডেভিড ফোরস্টার

25

মঙ্গোডিবি ডক্সের কয়েকটি পরামর্শ রয়েছে। http://docs.mongodb.org/manual/reference/transparent-huge-pages/

"পছন্দসই" /etc/default/grubউপায়টি হ'ল সম্পাদনা এবং সংযোজন transparent_hugepage=neverকরা GRUB_CMDLINE_LINUX_DEFAULTতারপরে update-grubGRUB কনফিগারেশনটি পুনর্নির্মাণের জন্য চালানো ।

নিম্নলিখিত দুটি লাইনার ঠিক এটি করবে। আউটপুট যাচাই করতে ভুলবেন না!

sed -r 's/GRUB_CMDLINE_LINUX_DEFAULT="[a-zA-Z0-9_= ]*/& transparent_hugepage=never/' /etc/default/grub | sudo tee /etc/default/grub
sudo update-grub

নোট যে update-grubজন্য একটি আবরণ grub-mkconfiggrub-mkconfigএন্ট্রিগুলির পরাস্ত হবে /etc/default/grubথেকে যারা সঙ্গে /etc/default/grub.d/*। যদি সুযোগক্রমে আপনি এডাব্লুএসে চালাচ্ছেন তবে পরিবর্তে আপনাকে সম্পাদনা করতে হবে /etc/default/grub.d/50-cloudimg-settings.cfg

"বিকল্প" পদ্ধতিটি হ'ল /etc/rc.localপূর্বে নিম্নলিখিতগুলি সম্পাদনা করা এবং যুক্ত করা exit 0:

if test -f /sys/kernel/mm/transparent_hugepage/khugepaged/defrag; then
  echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
  echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

ব্যক্তিগতভাবে, আমি দুটি "পছন্দসই" এবং "বিকল্প" উভয় পদ্ধতিই শেষ করেছি কারণ তারা পারস্পরিক একচেটিয়া নয় এবং এটি ডিগ্র্যাগ সম্পর্কিত সতর্কতাটিকে সরিয়ে দেয়।

* উবুন্টু 14.04, মঙ্গোডিবি 3.0.2, এবং এডাব্লুএস-এ আমার জন্য কাজ করেছেন।


আমি এটি ডিজিটাল ওশনে আমার এক-ক্লিক-মোংগোডিবি অ্যাপ্লিকেশন সার্ভারে চেষ্টা করেছি এবং এটি কার্যকর হয়নি। এখনও একই সতর্কতা বার্তা পাচ্ছি।
scaryguy

ইসি 2 এবং50-cloudimg-settings.cfg
মার্টিন কনেকেনি

16

AWS ইসি 2 তে উবুন্টু 16.04 এ কাজ করার জন্য এটির একটি সমাধান পরীক্ষা করা হয়েছে। উবুন্টু ১.0.০৪ সিস্টেমেড ডিআইডি সিস্টেম ব্যবহার করে এবং এই কনফিগার ফাইলটি মঙ্গোডিবি বুট করার আগে এই সেটিংসটি পরিবর্তন করা উচিত বলে প্রকাশ করে।

নামের একটি ফাইল তৈরি /etc/systemd/system/mongodb-hugepage-fix.serviceকরুন এবং নিম্নলিখিত সামগ্রী যুক্ত করুন:

[Unit]
Description="Disable Transparent Hugepage before MongoDB boots"
#WARN: check service name on your system
# If you are using MongoDB Cloud, service name is "mongodb-mms-automation-agent.service"
Before=mongodb.service      

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'
ExecStart=/bin/bash -c 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'

[Install]
#WARN: check service name on your system
# If you are using MongoDB Cloud, service name is "mongodb-mms-automation-agent.service"
RequiredBy=mongodb.service

সিস্টেমে ফাইল লোড করতে:

systemctl daemon-reload

মঙ্গোডিবি-র বুট-সময় নির্ভরতা হিসাবে ফাইলটি সক্রিয় করতে

systemctl enable mongodb-hugepage-fix

আপনি যদি পরিবর্তনগুলি সাথে সাথেই সক্রিয় করতে চান তবে (পরবর্তী বুটের আগে)

systemctl start mongodb-hugepage-fix
systemctl restart mongod

এই সমাধানটি উবুন্টু 14.04-র জন্য উপযুক্ত নয় , যা সিস্টেমেডের পরিবর্তে আপস্টার্ট থ্রি দ্রবণ ব্যবহার করে।


1
সিস্টেমড ফিক্সটি আধুনিক মঙ্গোডিবি ইনস্টলের জন্য উপযুক্ত, আপনাকে ধন্যবাদ।
চারটি

7

নীচের নীচের লাইনগুলিকে /etc/rc.local এ যুক্ত করুন।

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

আপনি সার্ভারটি রিবুট করার সময় এটি চলবে।


1
এটি সম্পর্কে একটি কনফিগার ফাইল আছে? rc.localকোনও ভাল ধারণা নয়, কারণ সিস্টেমের শুরু হওয়ার পরে rc.local কার্যকর হবে। সুতরাং মংডোব পরিষেবাটি এখনও ডিফল্ট সেটিংস ব্যবহার করবে।
ফেং ইউ

2
/ ইত্যাদি / ডিফল্ট / গ্রুব ফাইলটি সম্পাদনা করুন এবং "GRUB_CMDLINE_LINUX_DEFAULT =" স্বচ্ছ_হুজপেজ = কখনই না "লাইনে পরিবর্তন করুন এবং আপডেট-গ্রাব কমান্ডটি চালান তারপরে সার্ভারটি পুনরায় চালু করুন
PKumar

2
ধন্যবাদ, এটি কাজ করে। তবে, সংশোধন করার মতো কোনও উপায় আছে /sys/kernel/mm/transparent_hugepage/defragকি? আমি পুনরায় বুট করার সময়, মঙ্গো শেলটি আমাকে "** সতর্কতা: / sys / কার্নেল / মিমি / স্বচ্ছ_হেজপেজ / ডিফ্রেগ 'সর্বদা' বলেও বলে।
ফেং ইউ

@ ফেনগইউ এই পৃষ্ঠারটি চেষ্টা করুন ডকস.মংগড.বি.আর
টিউটোরিয়াল /

0

GRUB আপগ্রেড করার পরে পরিবর্তিত হবে, এবং rc.local কেবল মঙ্গো শুরু হওয়ার পরে চলবে, তাই সম্ভবত আমাদের আরসি.লোকালের শেষে পরিষেবা মোঙ্গো পুনরায় চালু করতে হবে

যদি পরীক্ষা -f / sys / কার্নেল / মিমি / স্বচ্ছ_হেজপেজ / সক্ষম; তারপর
  প্রতিধ্বনি কখনও না </ sys / কার্নেল / মিমি / স্বচ্ছ_হেজপেজ / সক্ষম
ফাই

যদি পরীক্ষা -f / sys / কার্নেল / মিমি / স্বচ্ছ_হেজপেজ / ডিফ্র্যাগ; তারপর
   প্রতিধ্বনি কখনও না </ sys / কার্নেল / মিমি / স্বচ্ছ_হেজপেজ / ডিফ্র্যাগ
ফাই

অপেক্ষা 1 && সার্ভি মংড পুনরায় আরম্ভ করুন

বা সম্ভবত কেউ উবুন্টু 14.04-এ স্ক্রিপ্টে সফলভাবে উপরের লাইনগুলি যুক্ত করেছেন?


0

যেহেতু আমরা জবাবদিহি দিয়ে মেশিন স্থাপন করছি আমি আরসি ফাইলগুলি সংশোধন করতে পছন্দ করি না।

আমি দ্রুত চেষ্টা করার সময় sysfsutils/ sysfs.confবা ধীর মেশিনগুলিতে পরিষেবাগুলি চালু করার সময় / তবে সময় সংক্রান্ত সমস্যাগুলিতে ছুটে এসেছি । দেখে মনে হচ্ছিল কখনও কখনও সিঙ্গফুস্টিলের আগে মঙ্গোদ শুরু হয়েছিল। কখনও কখনও এটি কাজ করে, কখনও কখনও এটি করেনি।

যেহেতু মংডোড একটি আপস্টার্ট প্রক্রিয়া আমি দেখতে পেয়েছি যে সবচেয়ে পরিষ্কার সমাধানটি /etc/mongo_vm_settings.confনিম্নলিখিত বিষয়বস্তু সহ ফাইল যুক্ত করা ছিল :

# Ubuntu upstart file at /etc/init/mongod_vm_settings.conf
#
#   This file will set the correct kernel VM settings for MongoDB
#   This file is maintained in Ansible

start on (starting mongod)
script
  echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
  echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
end script

এটি স্ক্রিপ্টটি মঙ্গোদ শুরু হওয়ার ঠিক আগে চলবে। মঙ্গোদ পুনরায় চালু করুন ( sudo service mongod restart) এবং সম্পন্ন হয়েছে।


নোট করুন যে এই সমাধানটি "আপস্টার্ট" ডিআইএম সিস্টেমটি ব্যবহার করে, যখন উবুন্টু 16.04 সিস্টেমযুক্ত ডিআইডি সিস্টেমের উপর ভিত্তি করে।
মার্ক স্টসবার্গ

0

সতর্কতা /etc/sysfs.confলগটিতে কিছুটা পড়ার পরে আমি এই দুটি লাইন y voilá এ যুক্ত করেছি á

kernel/mm/transparent_hugepage/enabled = never
kernel/mm/transparent_hugepage/defrag = never

এই পরিবর্তনগুলি প্রয়োগ করার পরে মেশিনটি পুনরায় বুট করুন।


এটি এখনও sysfsutilsপ্যাকেজ প্রয়োজন (আমার উত্তর দেখুন)।
ডেভিড ফোস্টার 11

অবশ্যই এটি প্রয়োজন
Ulv3r
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.