kswapd0 অনেকগুলি সিপিইউ নিচ্ছে


45

kswapd0 আমার সিপিইউর 99.9% নিচ্ছে যা শীর্ষস্থানীয় আমাকে দেখায়, সমস্যাটি আজ উপস্থিত হয়েছিল যখন গেমিংয়ের সময় এবং প্রথমবার এটি 6 মিনিটের পরে চলে যায় এবং এখন এটি প্রায় 20 মিনিটের জন্য এটি করে চলেছে। এটি কীভাবে স্থিরযোগ্য এবং কী কারণে এটি ঘটছে?


আমার সাথে উবুন্টুতেও 14.04 এ ঘটে।
eri0o

এটি আমার সাথে 18.04 সালেও ঘটছে। বিশদটি
যুবরাজ

উত্তর:


48

Kswapd0 প্রক্রিয়া হ'ল প্রক্রিয়া যা ভার্চুয়াল মেমরি পরিচালনা করে। আপনার মেশিনে উচিত র্যাম, swap 'র, এবং আপনার HDD এর / এসএসডি উপর EXT4 আছে। Ext4 হ'ল যেখানে সমস্ত কিছু সঞ্চিত থাকে এবং এটি সর্বদা র‍্যামের চেয়ে অ্যাক্সেস করতে ধীর হয়। প্রোগ্রামগুলি তথ্যগুলিতে দ্রুত অ্যাক্সেস করার জন্য র্যাম একটি অর্ধপথের চলমান জায়গার মতো। বেশিরভাগ কম্পিউটারে কমপক্ষে 4 গিগাবাইট র‌্যাম থাকে, যা সাধারণ পরিস্থিতিতে প্রচুর। কোনও গেম খেলার সময়, আপনি র‍্যাম স্পেসে কম রান করতে পারেন, যেখানেই সুইপ আসে।

SWAP হল একটি নকল র‌্যাম যা আপনার এইচডিডি / এসএসডি আপনার EXT4 এর পাশেই রয়েছে। এটি এক্সটি 4 এর থেকে অ্যাক্সেস করা দ্রুত, তবে এটি প্রকৃত র‍্যামের চেয়ে অনেক ধীর। আপনি যখন স্মৃতিশক্তি কম রাখেন, kswapd0 এমন প্রোগ্রামগুলিকে সরিয়ে দেয় যা আপনি SWAP- তে অন্যান্য প্রোগ্রামের মতো ব্যবহার করেন না / ব্যবহার করছেন না, যা এই প্রক্রিয়াগুলিতে চূড়ান্তভাবে পিছিয়ে পড়ে। আপনার গেমটির যদি 5 গিগাবাইট র‌্যামের প্রয়োজন হয় তবে কমপক্ষে 1 জিবি র‌্যাব সোয়াপ্পে থাকত। এর অর্থ এটি যখন তথ্যটি অ্যাক্সেস করার চেষ্টা করে তখন এটি পেতে এটি আরও দীর্ঘ অপেক্ষা করতে হবে।

এই সম্পূর্ণ প্রক্রিয়াটি চূড়ান্ত সিপিইউ ব্যবহারের কারণী করে, সোয়াপ্প এবং র‍্যাম থেকে তথ্য সরিয়ে নিয়ে যায় এবং একই সাথে সমস্ত তথ্যের অনুরোধ পরিচালনা করে। কিভাবে এই সমস্যা সমাধানের জন্য?

  1. আপনি যখন পুরোপুরি র‌্যামের বাইরে চলে যান তখন কেবলমাত্র সোয়াপ্পে স্টাফ স্থানান্তর করতে kswapd0 কে বলুন। সোয়াপ সংক্রান্ত সমস্যাগুলি সমাধান করার জন্য এটি একমাত্র কার্যকর পদ্ধতি। চালান

    echo vm.swappiness=0 | sudo tee -a /etc/sysctl.conf

    যেখানে সোয়াপাপ ব্যবহার করা উচিত 0তার মধ্যে শতকরা 100ভাগটি কোথায় থাকবে (যখন আপনার 0% র‌্যাম বাকি থাকবে, সোয়াপ্প ডেটা নেওয়া শুরু করবে)। আপনি এই কমান্ডটি প্রতিটি সময় gedit বা ন্যানো বা অন্য কোনও কিছু ব্যবহার না করে এর শেষে এই কমান্ডটি যুক্ত করার পরিবর্তে কেবল নিজের পছন্দ অনুসারে /etc/sysctl.conf সম্পাদনা করতে পারেন, যদিও অবশ্যই এই ফাইলটি মূল মালিকানাধীন su রিবুট এবং আপনার সেট!

  2. অন্যান্য প্রক্রিয়া দ্বারা র্যামের ব্যবহার হ্রাস করুন বা উচ্চ মেমরি প্রোগ্রাম চালানোর সময় অন্যান্য প্রোগ্রামগুলি বন্ধ করুন। এ কারণেই বেশিরভাগ গেমস আপনাকে বলার আগে অন্য সমস্ত উইন্ডো বন্ধ করতে বলে বা ইনস্টলেশনগুলি একই কাজ করে। ফাইল সিঙ্কিং পরিষেবাদির মতো জিনিসগুলি প্রচুর স্মৃতি গ্রহণ করে।
  3. আরও র‌্যাম কিনুন। র‌্যাম ইনস্টল করা ততটা শক্ত নয়। একটি ছোট বগিতে এক বা দুটি স্ক্রু (আপনি ল্যাপটপে থাকলে) এবং একটি সহজ ক্লিক। শুধু আপনি সঠিক ধরণের কিনছেন তা নিশ্চিত হন!
  4. র‌্যামের সাথে সিপিইউর লোয়ার প্রক্রিয়াগুলি আপনি যতটা করেছেন। এটি সেই র‍্যাম থেকে সোয়াপ্প বিস্ফোরণকে আরও মসৃণ করতে সহায়তা করবে।

এটিই আপনি সবচেয়ে ভাল করতে পারেন। অন্যরা স্বাপ সম্পূর্ণরূপে অক্ষম করে বলতে পারেন, তবে এটি বিপজ্জনক এবং আমি এটির সুপারিশ করব না। মেমরি ফুটো বা প্রচুর অ্যাপ্লিকেশন চলমান থাকলে এটি পুরো সিস্টেমগুলিকে হিমশীতল হতে পারে। কেবল উপলব্ধি করুন যে সোয়াপ্পটি র‌্যামের ব্যর্থতা fe এটি অবশ্যই র‌্যামের মতো দ্রুত বা দক্ষ নয়, তবে এটি উইন্ডোর পেজফাইলে থেকে ভাল! (যা একই উদ্দেশ্য সম্পাদন করে)

সম্পাদনা: আপনি যদি সোয়াপের বিষয়ে আরও জানতে আগ্রহী হন তবে এখানে দেখুন


আমার পক্ষে সমস্যাটি আর কী স্থির করেছে তা আমি ঠিক বুঝতে পারি না, তবে আমি ভাল লেখার উত্তরের জন্য আপনাকে ধন্যবাদ জানায় যা অনেক কিছু ব্যাখ্যা করে।
কাস্পার

আপনার উত্তর অনুসারে, আমি কিছু প্রক্রিয়া শেষ করি যাতে কম অদলবুদ্ধি ব্যবহার করা হয়। এখন প্রক্রিয়া kwapd0শেষ। ধন্যবাদ।
mtoloo

28

kswapd0 একটি সিপিইউর 99.9% এ চলে তবে বাস্তবে তা অদলবদল হয় না

আমার কাছে এটি উবুন্টু 14.04 এ সময়ে কার্নেল 3.19.0-50-জেনেরিক (এবং এর আগে) একটি ভিএমওয়্যার ভিএম-তে চলমান থাকে। আমার কোনও ক্লু নেই, এটি কীভাবে প্রদর্শিত হয়েছিল, তবে এটি অলস সময়ের মধ্যে আসে comes

top শো:

# top
top - 09:49:35 up 5 days, 18:35,  1 user,  load average: 1.00, 1.00, 0.99
Tasks: 219 total,   2 running, 217 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us, 25.0 sy,  0.0 ni, 74.7 id,  0.2 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem:   3028784 total,  1874468 used,  1154316 free,  1010276 buffers
KiB Swap: 15624188 total,     3032 used, 15621156 free.   234928 cached Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    52 root      20   0       0      0      0 R  99.7  0.0 122:15.21 kswapd0
     3 root      20   0       0      0      0 S   0.3  0.0   0:29.86 ksoftirqd/0
     7 root      20   0       0      0      0 S   0.3  0.0   9:49.47 rcu_sched

অস্থায়ী সমাধান

একটি রিবুট সমস্যার সমাধান করে - অস্থায়ীভাবে।

সার্ভারফল্টে উত্তর অনুসরণ করে (kswapd প্রায়শই 100% সিপিইউ ব্যবহার করে যখন সোয়াপ ব্যবহার করা হয়) সেখানে আমার সিস্টেমে একই সেটিংস:

# cat /proc/sys/vm/swappiness
60
# cat /proc/sys/vm/vfs_cache_pressure
100
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

সমাধানটি আসলে ছিল # echo 1 > /proc/sys/vm/drop_caches:

# cat /proc/sys/vm/drop_caches
0
# echo 1 > /proc/sys/vm/drop_caches
# cat /proc/sys/vm/drop_caches
1

এখন ঠিক আছে:

# top
top - 10:08:58 up 5 days, 18:55,  1 user,  load average: 0.72, 0.95, 0.98
Tasks: 220 total,   1 running, 219 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   3028784 total,   681704 used,  2347080 free,     2916 buffers
KiB Swap: 15624188 total,     3032 used, 15621156 free.    81924 cached Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     9 root      20   0       0      0      0 S   0.3  0.0  14:10.40 rcuos/0
     1 root      20   0   45652   8124   2888 S   0.0  0.3   1:54.98 init

স্থায়ী সমাধান (খুঁজে পাওয়া যাবে)?

তবে যেহেতু প্রকৃত কারণ এখনও জানা যায় নি, এবং আমি নেট সম্পর্কে কোনও উপযুক্ত ব্যাখ্যা জরিমানা করি নি, এটি স্থায়ী সমাধান নয়। আসলে, নির্বাচিত উত্তর স্থায়ী সমাধান হতে পারে। আমি কেবল ভবিষ্যতের রেফারেন্সের জন্য এটি যুক্ত করতে চেয়েছিলাম, রিবুট হিসাবে (সিসটেল কার্যকর করতে) সর্বদা সম্ভব হয় না।

অন্য একটি সমাধান হতে পারে THP সেট করতে হয় madviceবা never( তার উত্তরে পোয়েজের মন্তব্য দেখুন , আমি কীভাবে "/ sys / কার্নেল / মিমি / স্বচ্ছ_হেজপেজ / সক্ষম" এবং অক্ষম স্বচ্ছ বিস্তৃত পৃষ্ঠাগুলি (টিএইচপি) সম্পর্কিত রেফারেন্সড মঙ্গোডিবি ম্যানুয়াল দেখুন )

ক্রোন জব

আমি একটি "স্থায়ী" সমাধান হিসাবে ক্রোন জব হিসাবে নিম্নলিখিত ব্যাচ সেট আপ করেছি:

#!/bin/bash


## run as cron, thus no $PATH, thus need to define all absolute paths
top=/usr/bin/top
grep=/bin/grep


top=$($top -bn1 -o \%CPU -u0 | $grep -m2 -E "%CPU|kswapd0")

IFS='
'
set -f

i=0

for line in $top
do
        #echo $i $line

        if ! (( i++ ))
        then
                pos=${line%%%CPU*}
                pos=${#pos}
                #echo $pos
        else
                cpu=${line:(($pos-1)):3}
                cpu=${cpu// /}
                #echo $cpu
        fi

done

[[ -n $cpu ]] && \
(( $cpu >= 90 )) \
&& echo 1 > /proc/sys/vm/drop_caches \
&& echo "$$ $0: cache dropped (kswapd0 %CPU=$cpu)" >&2 \
&& exit 1

exit 0

সঙ্গে অনুরোধ করা

# m h  dom mon dow   command
  * *  *   *   *     /bin/bash /path/to/batch/drop_caches.sh >> /var/log/syslog 2>&1


খুব সুন্দর উত্তর, ধন্যবাদ। আরপিআই কার্নেল আপডেট হয়েছে এবং এটি আমি পেয়ে যাচ্ছি
পল বি

ধন্যবাদ, @ পলব্ব। আমি আমার সিস্টেমে স্থায়ী সমাধান হিসাবে ক্রোন জবটি আমার উত্তরটিতে যুক্ত করেছি।
মার্টিন রেগেগ

@ ওয়েজার দ্বারা সঠিকভাবে নির্দেশিত হিসাবে , এটি 16.04-এও কাজ করে। যেমন আমি বর্তমানে নিজেকে ব্যবহার করছি। তাই ট্যাগ যুক্ত। ধন্যবাদ!
মার্টিন রেগেগ

আবার ধন্যবাদ, @ ওয়েজার ! - আমি স্ক্রিপ্টের শা-ব্যাংয়ে অনুপস্থিত বিস্মৃত চিহ্নটি সংশোধন করেছি।
মার্টিন রেগেগ

1
"প্রতিধ্বনি 1> / proc / sys / vm / ড্রপ_ক্যাচস" আমার জন্য উচ্চ সিপিইউ ব্যবহার স্থির করেছে - রাত এবং দিনের পার্থক্য! kswapd0 100% সিপিইউ থেকে 0% এ গেছে। কেন এবং একটি স্থায়ী সমাধানের জন্য একটি ব্যাখ্যা দুর্দান্ত হবে। (পার্শ্ব দ্রষ্টব্য: আমি লিনাক্স কার্নেলটি 4.8.0-36-জেনেরিক 16 গিগাবাইট মেমি এবং 16 জিবি
স্বাপের সাথে চালাচ্ছি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.