সিস্টেমড সিগ্রুপ সহ সমস্ত ব্যবহারকারীর জন্য একটি ডিফল্ট সংস্থান সীমা সেট করুন


9

আমি এর মতো ব্যবহারকারীদের জন্য একটি স্মৃতি সীমা নির্ধারণ করতে পারি:

systemctl set-property user-UID.slice MemoryHigh=24G

সমস্ত ব্যবহারকারীর জন্য এটি প্রয়োগ করার কোনও উপায় আছে কি? আমি প্রতিটি ব্যবহারকারী 24G পেতে চাই, সমস্ত ব্যবহারকারীর প্রক্রিয়াগুলির জন্য মোট 24G নয় (যা আমি মনে করি এটি user.sliceসরাসরি সেট করার ফলাফল হবে )।

উত্তর:


7

এটি করার কোনও আনুষ্ঠানিকভাবে সমর্থিত উপায় নেই। (এটি ভুল the নীচের অংশটি দেখুন) একটি সরকারীভাবে নিরুৎসাহিত উপায় (কারণ এটি সিগ্রুপকে হেরফের করে) এইভাবে:

নিম্নলিখিত ফাইলটি হিসাবে তৈরি করুন /etc/systemd/system/user@.service.d/set-memhigh.conf

[Service]
Type=simple
ExecStartPost=+/root/set-memoryhigh.sh %i

তারপরে নিম্নলিখিত ফাইলটিকে "/root/set-memoryhigh.sh" হিসাবে তৈরি করুন

#!/bin/bash
exec >>/var/tmp/log.txt 2>&1 # for logging
set -x # for logging 
for d in /sys/fs/cgroup /sys/fs/cgroup/user.slice /sys/fs/cgroup/user.slice/user-$1.slice; do
  echo "+memory" >>${d}/cgroup.subtree_control
done
/bin/echo "24G" >> /sys/fs/cgroup/user.slice/user-$1.slice/memory.high

এটি কাজ করে চলতে পারে কিনা তা আপনি দেখতে পারেন

cat /sys/fs/cgroup/user.slice/user-${UID}.slice/memory.high

যদি "/sys/fs/cgroup/user.slice" উপস্থিত না থাকে তবে ইউনিফাইড সিগ্রুপ ক্রমক্রমটি সক্ষম হয় না। আমাদের এটি https://unix.stackexchange.com/a/452728/297666 হিসাবে সক্ষম করতে হবে

যদিও এটি কাজ করে, আপনি যদি এটি পছন্দ করেন তবে আমি নিশ্চিত নই ...

25 জুলাই নোটটি যুক্ত করা হয়েছে: প্রতিটি ব্যবহারকারীর /etc/systemd/system/user-1000.sliceজন্য নিম্নলিখিত ফাইলটি তৈরি করা (ব্যবহারকারীর ইউআইডি দ্বারা 1000 প্রতিস্থাপন) সেই ব্যবহারকারীর উপর একটি স্মৃতি সীমাবদ্ধতা আরোপ করে। আমি এটি ওবুন্টু 18.04- তে সিস্টেমেড 237 তে এবং ডেবিয়ান স্ট্রেচথ প্রসারিত-ব্যাকপোর্টগুলি থেকে ইনস্টল করা সিস্টেমড 237 সহ যাচাই করেছি :

[Slice]
Slice=user.slice
MemoryHigh=24G

অসুবিধাটি হ'ল প্রতিটি ব্যবহারকারীর জন্য আমাদের উপরের ফাইলটি তৈরি করতে হবে । সিস্টেমেড 239 দিয়ে আমরা উপরের ফাইলটি তৈরি করতে পারি /etc/systemd/system/user-.slice.d/memory.confএবং প্রতিটি ব্যবহারকারীর উপর মেমরি সীমাবদ্ধতা আরোপিত হয়। তবে সিস্টেমেড 239-তে একটি বাগ রয়েছে (এই বাগটি 240 সালে সংশোধন করা হয়েছিল) এবং এটি যেমন ইচ্ছা তেমন কাজ করে না। বাগের চারপাশে কাজ করতে নীচের ফাইলটি তৈরি করে user-0.sliceচালান systemctl enable user-0.slice। আমরা কি না প্রত্যেক ব্যবহারকারীর জন্য নিম্নলিখিত ফাইল করা আছে।

[Unit]
Before=systemd-logind.service
[Slice]
Slice=user.slice
[Install]
WantedBy=multi-user.target

এর মধ্যে এটিকে শালীন কাজের মতো মনে হচ্ছে তবে আমি আরও অফিসিয়াল সংস্করণ বের করব।
কাই

1
@ কাই আমি স্মৃতি সীমাবদ্ধতার জন্য সরকারী উপায় খুঁজে পেয়েছি এবং সেগুলি আমার উপরের উত্তরটিতে যুক্ত করেছি। আশা করি এটি কার্যকর।
রিউটারো মাতসুমোটো

1
আমি এটি পরীক্ষা করে দেখব, তবে এটি দেখতে আমার ঠিক যেমনটি লাগবে (সেই বাগটি বাদে)
কাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.