লিনাক্সে জেডএফএসে আরক_ম্যাক্স সেটিংটি কেন সম্মানিত নয়?


20

আমি উবুন্টু 12.04-তে তাদের পিপিএ থেকে 0.6.2 জোলএল চালাচ্ছি । এটি 16 জিবি মেমরি সহ হোস্টে রয়েছে কেভিএম / লিবিবার্ট ব্যবহার করে কিছু ভিএম চালানোর উদ্দেশ্যে। কিছু সময়ের পরে জোলটি একটি উন্মাদ পরিমাণ মেমরি ব্যবহার করছে, 98 টি ভিএম ব্যবহার করে র‌্যাম ব্যবহারের 98% এ পৌঁছেছে। "মেমরি বরাদ্দ করতে অক্ষম" শুরু করতে প্রত্যাখ্যান করে এমন নতুন প্রক্রিয়াগুলির ফলাফল। আমি এমনকি আমার সমস্ত ভিএম শুরু করতে পারি না যা জেডএফএস ব্যবহারের আগে প্রায় 40-50% র্যাম ব্যবহার করে।

আমি যতদূর বুঝতে পেরেছি, টুইট না করে জোলের উচিত মেমরির সংক্ষিপ্ততার সাথে সাথে স্মৃতি প্রকাশ করা উচিত release ভাল, এটা না। তাই আমি সিদ্ধান্ত নিয়েছি arc_max1 জিবিতে সেটিংস সেট করব ।

# echo 1073741824 >> /sys/module/zfs/parameters/zfs_arc_max

তবুও এটি কোনও স্মৃতি প্রকাশ করে না।

যেমন আপনি নীচের এআরসি পরিসংখ্যানগুলি থেকে দেখতে পাচ্ছেন, এটি কনফিগার করা চেয়ে বেশি মেমরি ব্যবহার করছে (তুলনা c= 7572030912সাথে c_max= 1073741824)।

আমি এখানে কি ভুল করছি?

# cat /proc/spl/kstat/zfs/arcstats
4 1 0x01 84 4032 43757119584 392054268420115
name                            type data
hits                            4    28057644
misses                          4    13975282
demand_data_hits                4    19632274
demand_data_misses              4    571809
demand_metadata_hits            4    6333604
demand_metadata_misses          4    289110
prefetch_data_hits              4    1903379
prefetch_data_misses            4    12884520
prefetch_metadata_hits          4    188387
prefetch_metadata_misses        4    229843
mru_hits                        4    15390332
mru_ghost_hits                  4    1088944
mfu_hits                        4    10586761
mfu_ghost_hits                  4    169152
deleted                         4    35432344
recycle_miss                    4    701686
mutex_miss                      4    35304
evict_skip                      4    60416647
evict_l2_cached                 4    0
evict_l2_eligible               4    3022396862976
evict_l2_ineligible             4    1602907651584
hash_elements                   4    212777
hash_elements_max               4    256438
hash_collisions                 4    17163377
hash_chains                     4    51485
hash_chain_max                  4    10
p                               4    1527347963
c                               4    7572030912
c_min                           4    1038188800
c_max                           4    1073741824
size                            4    7572198224
hdr_size                        4    66873056
data_size                       4    7496095744
other_size                      4    9229424
anon_size                       4    169150464
anon_evict_data                 4    0
anon_evict_metadata             4    0
mru_size                        4    1358216192
mru_evict_data                  4    1352400896
mru_evict_metadata              4    508928
mru_ghost_size                  4    6305992192
mru_ghost_evict_data            4    4919159808
mru_ghost_evict_metadata        4    1386832384
mfu_size                        4    5968729088
mfu_evict_data                  4    5627991552
mfu_evict_metadata              4    336846336
mfu_ghost_size                  4    1330455552
mfu_ghost_evict_data            4    1287782400
mfu_ghost_evict_metadata        4    42673152
l2_hits                         4    0
l2_misses                       4    0
l2_feeds                        4    0
l2_rw_clash                     4    0
l2_read_bytes                   4    0
l2_write_bytes                  4    0
l2_writes_sent                  4    0
l2_writes_done                  4    0
l2_writes_error                 4    0
l2_writes_hdr_miss              4    0
l2_evict_lock_retry             4    0
l2_evict_reading                4    0
l2_free_on_write                4    0
l2_abort_lowmem                 4    0
l2_cksum_bad                    4    0
l2_io_error                     4    0
l2_size                         4    0
l2_asize                        4    0
l2_hdr_size                     4    0
l2_compress_successes           4    0
l2_compress_zeros               4    0
l2_compress_failures            4    0
memory_throttle_count           4    0
duplicate_buffers               4    0
duplicate_buffers_size          4    0
duplicate_reads                 4    0
memory_direct_count             4    66583
memory_indirect_count           4    7657293
arc_no_grow                     4    0
arc_tempreserve                 4    0
arc_loaned_bytes                4    0
arc_prune                       4    0
arc_meta_used                   4    427048272
arc_meta_limit                  4    2076377600
arc_meta_max                    4    498721632

# free -m
             total       used       free     shared    buffers     cached
Mem:         15841      15385        456          0         75         74
-/+ buffers/cache:      15235        606
Swap:            0          0          0

উত্তর:


22

IMHO / sys / মডিউল / zfs / পরামিতিগুলির পরামিতিগুলি কেবল 0/ 1- disabled/ এ সেট করা যেতে পারে enabled" সংশোধন: প্যারামিটারের উপর নির্ভর করে

আমি একই নৌকায় zfs এর মেমরির ব্যবহার সীমাবদ্ধ করতে চাইছি এবং মনে হচ্ছে যে একটিকে একটি /etc/modprobe.d/zfs.conf ফাইল তৈরি করতে হবে এবং সেখানে প্যারামিটার এবং পছন্দসই মান লিখতে হবে। এই পরিবর্তনটি পুনরায় বুট করার পরে কার্যকর হবে।

echo "options zfs zfs_arc_max=34359738368" >> /etc/modprobe.d/zfs.conf

চলমান মডিউলটির জন্য zfs_arc_max পরামিতি পরিবর্তন করতে পারেন।

echo "34359738368" > /sys/module/zfs/parameters/zfs_arc_max

দয়া >করে ফাইলটি যুক্ত করার বিপরীতে ফাইলটির বিষয়বস্তু প্রতিস্থাপনের ব্যবহারটি নোট করুন >>

উত্স: /programming//a/18808311


1
জেডএফএস চাপটি সঙ্গে সঙ্গে সঙ্কুচিত হয় না। তবে (জেডএফএসনলিনাক্স) যথারীতি অ্যাপ্লিকেশনগুলি সেই মেমরি বরাদ্দ করার সময় এটি পুনরুদ্ধার করা হয়। আপনার যদি স্মৃতিতে হোগ করার জন্য কিছু প্রয়োজন হয় তবে সম্ভবত github.com/hilbix/killmem (শুধুমাত্র 8K এর পরে make static; strip -s killmem) দেখুন
টিনো

উবুন্টু 16.04-এ আমার update-initramfs -u -k allএই সেটিংসটি /etc/modprobe.d/zfs.confপ্রচার থেকে শুরু করতে পুনরায় বুট করার আগে চালানো দরকার ।
লেচআপ

@ লেচআপ: উবুন্টু 16.04-তে আমি options zfs zfs_vdev_scheduler=cfqআমার /etc/modprobe.d/zfs.conf এ যুক্ত করেছি । আমি রিবুট করেছি এবং এটি কাজ করেছে; সময়সূচী এখন নফের পরিবর্তে সিএফকিউ ছিল । কেন আপনি প্রয়োজনীয় ব্যাখ্যা করতে পারেন update-initramfs -u -k all?
মার্টিন ভেলিজ

@ মার্টিনভেলিজ আমি জানি এটি অদ্ভুত তবে এটির পরিবর্তে আমার মেশিনে পরিবর্তনগুলি পুনরায় বুট করার পরে প্রচার করা হয়নি ... আমি বিভিন্ন বিকল্প পপগেট করার চেষ্টা করছিলাম zfs_arc_maxসম্ভবত এই কীটি কোনওভাবেই ইন্রামমেসে ক্যাশে আছে?
লেচপ

5

http://fibrevillage.com/storage/169-zfs-arc-on-linux-how-to-set-and-monitor-on-linux

এই নিবন্ধটি খুবই ভাল

শুরু সংস্করণ ZoL 0.6.2 আপনি রানটাইমে সি_ম্যাক্স সেট করতে পারেন, তবে আরসি আকারটি স্বয়ংক্রিয়ভাবে প্রকাশিত হবে না। র‌্যামকে মুক্তি দিতে বাধ্য করার জন্য জপুলটি রফতানি করা দরকার।


4

একবার আপনি যখন আপনার চাপের আকারটি পরিবর্তন করেছেন, আপনাকে আপনার ক্যাশগুলি ফেলে দিতে হবে।

echo 3 > /proc/sys/vm/drop_caches

এবং অপেক্ষা করুন (আপনার প্রম্পট অবিলম্বে ফিরে আসবে না, তবে অন্যান্য প্রক্রিয়াগুলি চলতে থাকবে)। এটি আস্তে আস্তে ক্যাশেগুলি আনড করবে (একটি বক্সে ডাব্লু / GB৪ গিগাবাইটে 4 বছরের পুরানো সিপিইউতে 2 গিগাহার্জ 4 বছরের পুরানো সিপিইউতে 2 জোড়া রেইডের জন্য আমার 24 জিবি ক্যাশে 2.5 মিনিট) - সাবধান, আপনার হঠাৎ কোনও ক্যাশে থাকবে না এবং কোনও ডেটা পড়ার প্রক্রিয়াগুলি কাঁচা ডিস্কটি সরিয়ে ফেলবে যাতে আপনি সম্ভবত আইও অপেক্ষা করতে দেখবেন কিছুক্ষণের জন্য ক্যাশটি পুনরায় সাজানো হবে।


আহ! আপনি কেন ব্যাখ্যা করতে পারবেন যে '3' কেন সেই প্রকফগুলিতে প্রবেশের জন্য লিখতে হবে?
জার্মটভিডিজক

কেবল পেজ ক্যাশে সাফ করুন: # sync; echo 1 > /proc/sys/vm/drop_caches ডেন্টি এবং ইনোড সাফ করুন: পেজ # sync; echo 2 > /proc/sys/vm/drop_caches ক্যাসি, ডেন্টি এবং ইনডগুলি সাফ করুন:# sync; echo 3 > /proc/sys/vm/drop_caches
গণিত

2

আপনি যে সমস্যার মধ্যে পড়তে পারেন সেটি হ'ল জেডএফএস ভার্চুয়াল মেশিন ফাইলগুলি (ভার্চুয়াল ডিস্ক) ক্যাশে করা। এটি এড়াতে আমি সর্বদা ভার্চুয়াল ডিস্কযুক্ত ফাইল সিস্টেমে প্রাইমারী ক্যাশে সম্পত্তি "মেটাডেটা" তে সেট করি।

যুক্তিটি হ'ল অতিথি ওএসের ডিস্কগুলির কোন অংশগুলি ক্যাশে করা উচিত সে সম্পর্কে আরও ভাল ইঙ্গিত রয়েছে।


0

প্যারামিটারটি মানিয়ে নিতে AFAIK নিম্নলিখিত শর্তগুলির একটি পূরণ করতে হবে।

  1. একটি চলমান সিস্টেমে: সমস্ত zpools রফতানি করুন, zfs মডিউলগুলি সরিয়ে দিন, zfs মডিউলটি পুনরায় সক্ষম করুন (সংজ্ঞা অনুসারে / zfs এ থাকলে এটি করা যায় না)।
  2. পরামিতি পরিবর্তন করার সময় initramfs চিত্রটি পুনরায় তৈরি করুন যাতে একটি রিবুটের পরে এটি কাজ করবে। Zfs.conf ফাইলের অবস্থানটি বুট প্রক্রিয়াতে এখনও সেই মুহুর্তে মাউন্ট করা হয়নি বলে এটি প্রয়োজন।

0

আপনার একটি অতিরিক্ত >অনেক " " রয়েছে।

কমান্ডটি হওয়া উচিত

echo 1073741824 > /sys/module/zfs/parameters/zfs_arc_max

" >>" না

>>অর্থ "যুক্ত করুন" (বিদ্যমান তালিকা)।
>"ওভাররাইট" (মান) এর অর্থ।

এজন্য আপনার প্রশ্নের কমান্ড কোড কাজ করবে না।


এটি ইতিমধ্যে গৃহীত উত্তরগুলির অংশ ছিল। serverfault.com/a/602457/135437
জার্মটভিডিজক

এই পোস্টটি একটি মিষ্টান্ধব জগাখিচুড়ি, মিঃ ডাউনভোটেস। লেখক একটি সম্পূর্ণ র‌্যাক বলেছেন, "এই কারণ" বা সমতুল্য না বলেই কেবল এই জগাখিচুয়ের শেষের কাছাকাছি যাওয়ার সময় সঠিক উত্তর স্পর্শ করে। এতটাই দুর্গন্ধযুক্ত, যে আমি আমার পোস্টটি থেকে উত্তর পাইনি। আমি প্রশ্ন থেকে কারণ দেখেছি। আমার পোস্টটি একটি কারণে উত্থাপিত হয়েছিল
হাইপোক্রিটাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.