উবুন্টু 16.04 এ সিগকনফিগ ইনস্টল করুন


13

আমি ব্যবহার করে কিছু নিয়ন্ত্রণ গ্রুপ তৈরি করতে চাই cgroup

এখন পর্যন্ত আমি নিম্নলিখিতগুলি করেছি:

  1. আমি কিছু প্যাকেজ ইনস্টল করেছি:

    sudo apt-get install cgroup-bin cgroup-lite cgroup-tools cgroupfs-mount libcgroup1
    
  2. তারপরে আমি /etc/cgconfig.confনিম্নলিখিত বিষয়বস্তু দিয়ে ফাইলটি তৈরি করেছি :

    mount {
      cpuset  = /cgroup/cpuset;
      cpu     = /cgroup/cpu;
      cpuacct = /cgroup/cpuacct;
      memory  = /cgroup/memory;
      devices = /cgroup/devices;
      freezer = /cgroup/freezer;
      net_cls = /cgroup/net_cls;
      ns      = /cgroup/ns;
      blkio   = /cgroup/blkio;
    }
    
    group limitcpu{
      cpu {
        cpu.shares = 400;
      }
    }
    
    group limitmem{
      memory {
        memory.limit_in_bytes = 512m;
      }
    }
    
    group limitio{
      blkio {
        blkio.throttle.read_bps_device = "252:0         2097152";
      }
    }
    
    group browsers{
      cpu {
        cpu.shares = 200;
      }
      memory {
        memory.limit_in_bytes = 128m;
      }
    }
    

    এখানে গাইড অনুসারে , ধরে নিলাম, কনফিগারেশন ফাইলটি একই জায়গায় থাকে এবং উবুন্টুতে একই সিনট্যাক্স ব্যবহার করে, যেমন এটি সেন্টোজে ব্যবহার করে।

  3. তারপরে সেই গাইড অনুসারে আমার শুরু করা দরকার cgconfig service। আমি চেষ্টা করেছিলাম:

    sudo service cgconfig restart
    

    কিন্তু, ওরে না! একটি ফাইল অনুপস্থিত !:

    Failed to restart cgconfig.service: Unit cgconfig.service not found.
    
  4. আশেপাশে কিছু বিস্মিত এবং অনুসন্ধান করার পরে, আমি চেষ্টা করেছি:

    ● cgconfig.service
       Loaded: not-found (Reason: No such file or directory)
       Active: inactive (dead)
    

সুতরাং মনে হচ্ছে আমি কেবল আমার সিস্টেমে কোনও সিগকনফিগ পরিষেবা দিচ্ছি না!

আমি এটি ব্যবহার করে এটি অনুসন্ধান করেছি:

sudo aptitude search cgconfig

তবে, cgconfigখুঁজে পাওয়া যায় না।

আমি কীভাবে cgconfigআমার উবুন্টু 16.04 এ ইনস্টল করতে পারি ?

উত্তর:


15

ঠিক আছে, আমি নিজের মতো করে নিজেকে পরিচালনা করতে পেরেছি তবে কিছু পরিবর্তন সহ:

1) আমি একই ইউটিলিটিগুলি ইনস্টল করেছি:

sudo apt-get install cgroup-bin cgroup-lite cgroup-tools cgroupfs-mount libcgroup1

2) আমি কনফিড ফাইলগুলি এরকম সম্পাদনা করেছি:

/etc/init/cgroup-lite.conf

description "mount available cgroup filesystems"
author "Serge Hallyn <serge.hallyn@canonical.com>"

start on mounted MOUNTPOINT=/sys/fs/cgroup

pre-start script
test -x /bin/cgroups-mount || { stop; exit 0; }
test -d /sys/fs/cgroup || { stop; exit 0; }
/bin/cgroups-mount
cgconfigparser -l /etc/cgconfig.conf
end script

post-stop script
if [ -x /bin/cgroups-umount ]
then
    /bin/cgroups-umount
fi
end script

/etc/cgconfig.conf

# Since systemd is working well, this section may not be necessary.
# Uncomment if you need it
#
# mount {
# cpuacct = /cgroup/cpuacct;
# memory = /cgroup/memory;
# devices = /cgroup/devices;
# freezer = /cgroup/freezer;
# net_cls = /cgroup/net_cls;
# blkio = /cgroup/blkio;
# cpuset = /cgroup/cpuset;
# cpu = /cgroup/cpu;
# }

group limitcpu{
  cpu {
    cpu.shares = 400;
  }
}

group limitmem{
  memory {
    memory.limit_in_bytes = 512m;
  }
}

group limitio{
  blkio {
    blkio.throttle.read_bps_device = "252:0         2097152";
  }
}

group browsers {
    cpu {
#       Set the relative share of CPU resources equal to 25%
    cpu.shares = "256";
}
memory {
#       Allocate at most 512M of memory to tasks
        memory.limit_in_bytes = "512m";
#       Apply a soft limit of 512 MB to tasks
        memory.soft_limit_in_bytes = "384m";
    }
}

group media-players {
    cpu {
#       Set the relative share of CPU resources equal to 25%
        cpu.shares = "256";
    }
    memory {
#       Allocate at most 256M of memory to tasks
        memory.limit_in_bytes = "256m";
#       Apply a soft limit of 196 MB to tasks
        memory.soft_limit_in_bytes = "128m";
    }
}

cgconfigparser -l /etc/cgconfig.conf

এবং /etc/cgrules.conf

user:process                                         subsystems   group
[user]:/usr/lib/chromium-browser/chromium-browser   cpu,memory      browsers
[user]:/usr/bin/clementine                        cpu,memory     media-players

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

আমি GRUB_CMDLINE_LINUX_DEFAULTলাইনটি সম্পাদনা করেছি /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"

এটি আপডেট করা হচ্ছে:

sudo update-grub

3) এবং অবশেষে পরিবর্তনগুলি প্রয়োগ করতে পুনরায় বুট করুন।

এবং এইভাবে আমি এই কাজ পেয়েছি। এর আগে ক্রমিয়াম-ব্রাউজার, ক্লিমেটাইন, সাব্লাইম-টেক্সট এবং প্রচুর সংস্থান ব্যবহার করে অন্যান্য অ্যাপ্লিকেশন সহ - আমি বহুবার OOMs করছিলাম, এখন সেগুলি সুচারুভাবে চলছে এবং আমি আরও ভালভাবে মাল্টিটাস্ক করতে পারি।

আমি সত্যিই আশা করি এটি অন্যকে সহায়তা করতে পারে।

বর্তমানে ব্যবহার উবুন্টু 16,04 LTS সঙ্গে ইন্টেল ডুয়াল কোর 2.6 গিগাহার্জ এবং 4 GB। র্যাম.


1
এটি সঠিক পদ্ধতির মতো অনুভব করে তবে cgrules.conf ব্যবহার করার পরিবর্তে আমি cgexec আরও ভাল বলে মনে করি। এছাড়াও, আমি মনে করি আপনি ফাইলটির নাম বোঝাতে চেয়েছিলেন cgconfig.confএবং না cgconf.conf। যদি সিস্টেমড এর কাজটি করে, তবে আমার মনে হয় না যে আপনার mountএই ফাইলটির বিভাগটি দরকার need
চিহ্নিত করুন

আমি মার্কের সুপারিশ অনুসরণ করে এই উত্তরটি সম্পাদনা করেছি, এটি পরীক্ষা করেছি এবং ভালভাবে কাজ করে।
Rdrk

@ মার্ক, আমি আপনার সমাধানটির সাথে আগ্রহী হব cgexec
জোনাথন

9

আমি একই সমস্যা সম্মুখীন। দেখে মনে হচ্ছে সিগ্রুপ কনফিগার ফাইলগুলি লোড করার জন্য বর্তমান উবুন্টু বিতরণগুলিতে কোনও অন্তর্নির্মিত পরিষেবা নেই।

আপনি / ইউএসআর / শেয়ার / ডক / সিগ্রুপ-সরঞ্জাম / উদাহরণ / সিজিকনফিগ এবং / ইউএসআর / শেয়ার / ডক / সিগ্রুপ-সরঞ্জাম / উদাহরণ / সিগ্রেডে কয়েকটি (ভাঙ্গা?) উদাহরণ স্ক্রিপ্ট পাবেন

ম্যানুয়ালি কনফিগার ফাইলগুলি লোড করতে আপনি ব্যবহার করতে পারেন

# Loads /etc/cgconfig.conf 
cgconfigparser -l /etc/cgconfig.conf

# Loads /etc/cgrules.conf
cgrulesengd -vvv --logfile=/var/log/cgrulesengd.log

দরিদ্র ব্যক্তির সমাধান হিসাবে আমি নিজেই একটি ইনি স্ক্রিপ্ট লিখেছিলাম যা সিস্টেম স্টার্টআপে দুটি ফাইলই লোড করে।

#!/bin/sh
### BEGIN INIT INFO
# Provides:          cgconf
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Configures CGroups
### END INIT INFO

start_service() {
  if is_running; then
    echo "cgrulesengd is running already!"
    return 1
  else
    echo "Processing /etc/cgconfig.conf..."
    cgconfigparser -l /etc/cgconfig.conf
    echo "Processing /etc/cgrules.conf..."
    cgrulesengd -vvv --logfile=/var/log/cgrulesengd.log
    return 0
  fi
}

stop_service() {
  if is_running; then
    echo "Stopping cgrulesengd..."
    pkill cgrulesengd
  else
    echo "cgrulesengd is not running!"
    return 1
  fi
}

status() {
  if pgrep cgrulesengd > /dev/null; then
    echo "cgrulesengd is running"
    return 0
  else
    echo "cgrulesengd is not running!"
    return 3
  fi
}

is_running() {
  status >/dev/null 2>&1
}

case "${1:-}" in
  start)
    start_service
    ;;
  stop)
    stop_service
    ;;
  status)
    status
    ;;
  *)
    echo "Usage: /etc/init.d/cgconf {start|stop|restart|status}"
    exit 2
    ;;
esac

exit $?

এই ফাইলটি /etc/init.d/cgconf এ সংরক্ষণ করুন এবং এটি ব্যবহার করে ইনস্টল করুন

# make the script executable
chmod 755 /etc/init.d/cgconf

# register the service
update-rc.d cgconf defaults

# start the service
service cgconf start

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