লিনাক্সে জেডএফএস কেন এডাব্লুএস i2.8xlarge উদাহরণে 8x এসএসডি পুরোপুরি ব্যবহার করতে পারছে না?


12

আমি জেডএফএসে সম্পূর্ণ নতুন, তাই এটির শুরু করার জন্য আমি ভেবেছিলাম যে এটি কীভাবে আচরণ করে তার অনুভূতি পেতে আমি এটিতে কিছু সাধারণ মাপদণ্ড করব। আমি এর পারফরম্যান্সের সীমাটি ঠেলে দিতে চেয়েছিলাম তাই আমি একটি অ্যামাজন ইসি 2 i2.8xlargeউদাহরণ সরবরাহ করেছি (প্রায় $ 7 / ঘন্টা, সময় সত্যিই অর্থ!)। এই উদাহরণটিতে 8 800 জিবি এসএসডি রয়েছে।

আমি fioএসএসডিগুলিতে নিজেই একটি পরীক্ষা করেছি এবং নিম্নলিখিত আউটপুট পেয়েছি (ছাঁটা):

$ sudo fio --name randwrite --ioengine=libaio --iodepth=2 --rw=randwrite --bs=4k --size=400G --numjobs=8 --runtime=300 --group_reporting --direct=1 --filename=/dev/xvdb
[trimmed]
  write: io=67178MB, bw=229299KB/s, iops=57324, runt=300004msec
[trimmed]

4K র্যান্ডম লেখার জন্য 57K আইওপিএস। শ্রদ্ধেয়।

আমি তারপরে সমস্ত 8 টি বিস্তৃত একটি জেডএফএস ভলিউম তৈরি করেছি 8 প্রথমে এতে raidz18 টি এসএসডি সহ আমার একটি ভিডেভ ছিল , তবে এটি পারফরম্যান্সের জন্য খারাপ হওয়ার কারণগুলি নিয়ে পড়েছিলাম, তাই আমি এই জাতীয় চারটি mirrorদেবদেবীর সাথে শেষ করেছি:

$ sudo zpool create testpool mirror xvdb xvdc mirror xvdd xvde mirror xvdf xvdg mirror xvdh xvdi
$ sudo zpool list -v
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
testpool  2.91T   284K  2.91T         -     0%     0%  1.00x  ONLINE  -
  mirror   744G   112K   744G         -     0%     0%
    xvdb      -      -      -         -      -      -
    xvdc      -      -      -         -      -      -
  mirror   744G    60K   744G         -     0%     0%
    xvdd      -      -      -         -      -      -
    xvde      -      -      -         -      -      -
  mirror   744G      0   744G         -     0%     0%
    xvdf      -      -      -         -      -      -
    xvdg      -      -      -         -      -      -
  mirror   744G   112K   744G         -     0%     0%
    xvdh      -      -      -         -      -      -
    xvdi      -      -      -         -      -      -

আমি রেকর্ডসটি 4K এ সেট করেছিলাম এবং আমার পরীক্ষা চালিয়েছি:

$ sudo zfs set recordsize=4k testpool
$ sudo fio --name randwrite --ioengine=libaio --iodepth=2 --rw=randwrite --bs=4k --size=400G --numjobs=8 --runtime=300 --group_reporting --filename=/testpool/testfile --fallocate=none
[trimmed]
  write: io=61500MB, bw=209919KB/s, iops=52479, runt=300001msec
    slat (usec): min=13, max=155081, avg=145.24, stdev=901.21
    clat (usec): min=3, max=155089, avg=154.37, stdev=930.54
     lat (usec): min=35, max=155149, avg=300.91, stdev=1333.81
[trimmed]

আমি এই জেডএফএস পুলে কেবল 52K আইওপিএস পাই। এটি আসলে একটি এসএসডি থেকে কিছুটা খারাপ।

আমি বুঝতে পারি না আমি এখানে কী ভুল করছি। আমি কি ভুলভাবে জেডএফএস কনফিগার করেছি, বা এটি জেডএফএসের পারফরম্যান্সের একটি খারাপ পরীক্ষা?

দ্রষ্টব্য আমি অফিসিয়াল -৪-বিট CentOS 7 এইচভিএম চিত্র ব্যবহার করছি, যদিও আমি 4.4.5 এলেরপো কার্নেলটিতে আপগ্রেড করেছি:

$ uname -a
Linux ip-172-31-43-196.ec2.internal 4.4.5-1.el7.elrepo.x86_64 #1 SMP Thu Mar 10 11:45:51 EST 2016 x86_64 x86_64 x86_64 GNU/Linux

আমি এখানে তালিকাভুক্ত zfs রেপো থেকে জেডএফএস ইনস্টল করেছি । আমার কাছে zfsপ্যাকেজের 0.6.5.5 সংস্করণ রয়েছে ।

আপডেট : প্রতি @ ইয়েওয়াইটের পরামর্শটি আমি চেষ্টা করেছি ashift=12এবং ashift=13:

$ sudo zpool create testpool mirror xvdb xvdc mirror xvdd xvde mirror xvdf xvdg mirror xvdh xvdi -o ashift=12 -f

এবং

$ sudo zpool create testpool mirror xvdb xvdc mirror xvdd xvde mirror xvdf xvdg mirror xvdh xvdi -o ashift=13 -f

এগুলির কোনওটিতেই কোনও পার্থক্য হয়নি। আমি যা বুঝি তা থেকে সর্বশেষতম জেডএফএস বিটগুলি 4K এসএসডি সনাক্ত করতে এবং যুক্তিসঙ্গত ডিফল্ট ব্যবহার করে যথেষ্ট স্মার্ট।

আমি খেয়াল করেছিলাম যে সিপিইউ ব্যবহার স্পাইক করছে। @ টিম এটি প্রস্তাব করেছিল তবে আমি এটিকে প্রত্যাখ্যান করেছি তবে আমি মনে করি আমি সিপিইউ দেখার জন্য যথেষ্ট সময় দেখছি না। এই উদাহরণে 30 টি সিপিইউ কোরের মতো কিছু রয়েছে এবং সিপিইউ ব্যবহার 80% পর্যন্ত বাড়ছে sp ক্ষুধার প্রক্রিয়া? z_wr_issএটির প্রচুর দৃষ্টান্ত।

আমি নিশ্চিত করেছি যে সংক্ষেপণ বন্ধ রয়েছে, সুতরাং এটি সংক্ষেপণ ইঞ্জিন নয়।

আমি রাইড ব্যবহার করছি না, সুতরাং এটি প্যারিটি গণনা হওয়া উচিত নয়।

আমি একটি করেছিলাম perf topএবং এটি বেশিরভাগ কার্নেল সময়টি _raw_spin_unlock_irqrestoreভিতরে z_wr_int_4এবং osq_lockভিতরে ব্যয় করে z_wr_iss

আমি এখন বিশ্বাস করি যে এই পারফরম্যান্সের বাধাটির একটি সিপিইউ উপাদান রয়েছে, যদিও এটি কী হতে পারে তা নির্ধারণের আমি কাছে নেই।

আপডেট 2 : প্রতি @Weite এবং অন্যদের পরামর্শ যে এটি এই পরিবেশের ভার্চুয়ালাইজড প্রকৃতি যা কার্যকারিতা অনিশ্চয়তা তৈরি করে, আমি fioপরিবেশগতভাবে এসএসডি চারটি জুড়ে ছড়িয়ে ছিটিয়ে র্যান্ডম 4K রাইট লিখতাম bench প্রতিটি এসএসডি নিজেই ~ 55K আইওপিএস দেয়, তাই আমি চারটি জুড়ে প্রায় 240K আইও আশা করেছিলাম। আমি যা পেয়েছি তা কম-বেশি:

$ sudo fio --name randwrite --ioengine=libaio --iodepth=8 --rw=randwrite --bs=4k --size=398G --numjobs=8 --runtime=300 --group_reporting --filename=/dev/xvdb:/dev/xvdc:/dev/xvdd:/dev/xvde
randwrite: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
...
randwrite: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
fio-2.1.5
Starting 8 processes
[trimmed]
  write: io=288550MB, bw=984860KB/s, iops=246215, runt=300017msec
    slat (usec): min=1, max=24609, avg=30.27, stdev=566.55
    clat (usec): min=3, max=2443.8K, avg=227.05, stdev=1834.40
     lat (usec): min=27, max=2443.8K, avg=257.62, stdev=1917.54
[trimmed]

এটি পরিস্কারভাবে পরিবেশটি দেখায়, ভার্চুয়ালাইজড হওয়া সত্ত্বেও, আমি যা দেখছি তার থেকে অনেক বেশি আইওপিএস বজায় রাখতে পারে। জেডএফএস বাস্তবায়নের কিছু বিষয় এটিকে শীর্ষ গতিতে আঘাত করা থেকে বিরত রাখছে। আমি ঠিক বুঝতে পারি না যে এটি কি।


আপনি ইসি 2 এ আছেন। আপনি কেবলমাত্র অ্যামাজন আপনাকে যতটা আইওপিএস দিতে চান তা পান।
মাইকেল হ্যাম্পটন

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

এটি কি সিপিইউকে কর দিচ্ছে বা মেমরির সীমাবদ্ধ করছে?
টিম

আপনি এই সিরিজ নিবন্ধ পড়েছেন? hatim.eu/2014/05/24/… অন্য কোনও নিবন্ধ কি আদৌ সহায়তা করেছে?
টিম

1
জেডফসনলিনাক্সের বাস্তব বাস্তবায়নের ঘাটতিগুলি কেবল মাত্রই উড়িয়ে দেওয়ার জন্য, আমি একই উদাহরণে সোলারিস 11 ইনস্টল করে একই বেঞ্চ পরীক্ষার চেষ্টা করব।
দ্য ওয়াববিট

উত্তর:


6

এই সেটআপটি ভালভাবে সুর করা যাবে না। এসএসডি ব্যবহার করার সময় /etc/modprobe/zfs.conf ফাইল এবং আশিফ মান উভয়ের জন্য প্রয়োজনীয় প্যারামিটার রয়েছে

আশীফট = 12 বা 13 ব্যবহার করে আবার পরীক্ষা করুন।


সম্পাদনা:

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


সম্পাদনা:

আমার ধারণা আমি এইভাবে কোনও মেঘের উদাহরণটিকে অনুকূল করার চেষ্টা করার বিন্দুটি দেখতে পাচ্ছি না। কারণ যদি শীর্ষে পারফরম্যান্সের লক্ষ্য ছিল, আপনি হার্ডওয়্যার ব্যবহার করবেন, তাই না?

তবে মনে রাখবেন যে জেডএফএসের অনেকগুলি টিউনেবল সেটিংস রয়েছে এবং আপনি ডিফল্টরূপে যা পান তা আপনার ব্যবহারের ক্ষেত্রে খুব কাছাকাছি নয়।

আপনার /etc/modprobe.d/zfs.confএবং পুনরায় বুটে নিম্নলিখিত চেষ্টা করুন । অ্যাপ্লিকেশন সার্ভারগুলির জন্য আমি আমার অল-এসএসডি ডেটা পুলগুলিতে এটি ব্যবহার করি। আপনার অ্যাসিফটটি 12 বা 13 হওয়া উচিত comp টাইম সেট = অফ Set আমি রেকর্ডাইজটি ডিফল্ট হিসাবে (128 কে) রেখে দেব।

options zfs zfs_vdev_scrub_min_active=48
options zfs zfs_vdev_scrub_max_active=128
options zfs zfs_vdev_sync_write_min_active=64
options zfs zfs_vdev_sync_write_max_active=128
options zfs zfs_vdev_sync_read_min_active=64
options zfs zfs_vdev_sync_read_max_active=128
options zfs zfs_vdev_async_read_min_active=64
options zfs zfs_vdev_async_read_max_active=128
options zfs zfs_top_maxinflight=320
options zfs zfs_txg_timeout=30
options zfs zfs_dirty_data_max_percent=40
options zfs zfs_vdev_scheduler=deadline
options zfs zfs_vdev_async_write_min_active=8
options zfs zfs_vdev_async_write_max_active=64
options zfs zfs_prefetch_disable=1

দুর্দান্ত পরামর্শ। আমি আমার মূল প্রশ্নটি আরও বিশদ সহ আপডেট করেছি। সংক্ষিপ্তসার: অ্যাসিফট কোনও সহায়তা করেনি এবং আমি মনে করি এই সমস্যার জন্য কোনও সিপিইউ ব্যবহারের উপাদান রয়েছে।
আনেলসন

আপনি কি সংকোচন বা ডিডাপ ব্যবহার করছেন?
ew

না আমি নিশ্চিত করেছি যে সংক্ষেপণ বন্ধ রয়েছে zfs get compression। দেডুপও বন্ধ আছে।
আনেলসন

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

@ অ্যানেলসন ঠিক আছে উপরের সেটিংস ব্যবহার করে দেখুন।
ইয়েওয়াইট

2

দেখে মনে হচ্ছে আপনি লিনাক্স কার্নেল মুটেক্স লকটির জন্য অপেক্ষা করছেন যা ঘুরে ফিরে জেন রিং বাফারের জন্য অপেক্ষা করছে। অনুরূপ মেশিনে অ্যাক্সেস না করে আমি এ সম্পর্কে নিশ্চিত হতে পারি না, তবে আমি সেই সুযোগের জন্য আমাজন $ 7 / ঘন্টা প্রদান করতে আগ্রহী নই।

লম্বা লিখিত আপটি এখানে রয়েছে: https://www.reddit.com/r/zfs/comments/4b4r1y/why_is_zfs_on_linux_unable_to_fully_utilize_8x/d1e91wo ; আমি বরং এটি দুটি জায়গায় এক জায়গায় থাকতাম।


1

এটিকে ট্র্যাক করার চেষ্টা করার জন্য আমি একটি শালীন সময় ব্যয় করেছি। আমার নির্দিষ্ট চ্যালেঞ্জ: একটি পোস্টগ্রিস সার্ভার এবং আমি এর ডেটা ভলিউমের জন্য জেডএফএস ব্যবহার করতে চাই। বেসলাইনটি এক্সএফএস।

প্রথম এবং সর্বাগ্রে, আমার বিচারগুলি আমাকে বলে যে ashift=12এটি ভুল। যদি কিছু ম্যাজিক ashiftনম্বর থাকে তবে এটি 12 নয় I'm আমি ব্যবহার করছি 0এবং আমি খুব ভাল ফলাফল পাচ্ছি।

আমি একগুচ্ছ zfs বিকল্পের সাথেও পরীক্ষা করে দেখেছি এবং নীচের ফলাফলগুলি আমাকে দেয়:

atime=off - আমার অ্যাক্সেসের সময় দরকার নেই

checksum=off - আমি স্ট্রাইপ করছি, মিরর করছি না

compression=lz4- সংক্ষেপণের সাথে পারফরম্যান্স আরও ভাল (সিপিইউ ট্রেড অফ?)

exec=off - এটি এক্সিকিউটেবলের জন্য নয়, ডেটার জন্য

logbias=throughput - ইন্টারভেজে পড়ুন পোস্টগ্রিসের পক্ষে এটি আরও ভাল

recordsize=8k - পিজি নির্দিষ্ট 8 কে ব্লকসাইজ করুন

sync=standard- সিঙ্ক বন্ধ করার চেষ্টা করেছে; খুব একটা সুবিধা দেখেনি

নীচের আমার পরীক্ষাগুলি এক্সএফএসের পারফরম্যান্সের চেয়ে ভাল দেখায় (দয়া করে মন্তব্য করুন যদি আপনি আমার পরীক্ষায় ত্রুটি দেখেন!)।

এটির সাথে আমার পরবর্তী পদক্ষেপটি হ'ল পোস্টগ্র্রেস 2 এক্স ইবিএস জেডএফএস ফাইল সিস্টেমের মধ্যে চলছে।

আমার নির্দিষ্ট সেটআপ:

ইসি 2: m4.xlargeউদাহরণ

ইবিএস: 250 গিগাবাইট gp2ভলিউম

কার্নেল: লিনাক্স [...] 3.13.0-105-জেনেরিক # 152-উবুন্টু এসএমপি [...] x86_64 x86_64 x86_64 জিএনইউ / লিনাক্স *

প্রথমত, আমি কাঁচা ইবিএস কর্মক্ষমতা পরীক্ষা করতে চেয়েছিলাম। fioউপরের কমান্ডের একটি ভিন্নতা ব্যবহার করে আমি নীচে জ্বলন নিয়ে এসেছি। দ্রষ্টব্য: আমি 8 কে ব্লক ব্যবহার করছি কারণ পোস্টগ্র্রেএসকিউএল লিখেছি তা হ'ল:

ubuntu@ip-172-31-30-233:~$ device=/dev/xvdbd; sudo dd if=/dev/zero of=${device} bs=1M count=100 && sudo fio --name randwrite --ioengine=libaio --iodepth=4 --rw=randwrite --bs=8k --size=400G --numjobs=4 --runtime=60 --group_reporting --fallocate=none --filename=${device}
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.250631 s, 418 MB/s
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
...
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
fio-2.1.3
Starting 4 processes
Jobs: 4 (f=4): [wwww] [100.0% done] [0KB/13552KB/0KB /s] [0/1694/0 iops] [eta 00m:00s]
randwrite: (groupid=0, jobs=4): err= 0: pid=18109: Tue Feb 14 19:13:53 2017
  write: io=3192.2MB, bw=54184KB/s, iops=6773, runt= 60327msec
    slat (usec): min=2, max=805209, avg=585.73, stdev=6238.19
    clat (usec): min=4, max=805236, avg=1763.29, stdev=10716.41
     lat (usec): min=15, max=805241, avg=2349.30, stdev=12321.43
    clat percentiles (usec):
     |  1.00th=[   15],  5.00th=[   16], 10.00th=[   17], 20.00th=[   19],
     | 30.00th=[   23], 40.00th=[   24], 50.00th=[   25], 60.00th=[   26],
     | 70.00th=[   27], 80.00th=[   29], 90.00th=[   36], 95.00th=[15808],
     | 99.00th=[31872], 99.50th=[35584], 99.90th=[99840], 99.95th=[199680],
     | 99.99th=[399360]
    bw (KB  /s): min=  156, max=1025440, per=26.00%, avg=14088.05, stdev=67584.25
    lat (usec) : 10=0.01%, 20=20.53%, 50=72.20%, 100=0.86%, 250=0.17%
    lat (usec) : 500=0.13%, 750=0.01%, 1000=0.01%
    lat (msec) : 2=0.01%, 4=0.01%, 10=0.59%, 20=2.01%, 50=3.29%
    lat (msec) : 100=0.11%, 250=0.05%, 500=0.02%, 750=0.01%, 1000=0.01%
  cpu          : usr=0.22%, sys=1.34%, ctx=9832, majf=0, minf=114
  IO depths    : 1=0.1%, 2=0.1%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/w=408595/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
  WRITE: io=3192.2MB, aggrb=54184KB/s, minb=54184KB/s, maxb=54184KB/s, mint=60327msec, maxt=60327msec

Disk stats (read/write):
  xvdbd: ios=170/187241, merge=0/190688, ticks=180/8586692, in_queue=8590296, util=99.51%

ইবিএস ভলিউমের জন্য কাঁচা পারফরম্যান্স WRITE: io=3192.2MB

এখন, একই fioকমান্ডের সাহায্যে এক্সএফএসের পরীক্ষা করা :

Jobs: 4 (f=4): [wwww] [100.0% done] [0KB/0KB/0KB /s] [0/0/0 iops] [eta 00m:00s]
randwrite: (groupid=0, jobs=4): err= 0: pid=17441: Tue Feb 14 19:10:27 2017
  write: io=3181.9MB, bw=54282KB/s, iops=6785, runt= 60024msec
    slat (usec): min=3, max=21077K, avg=587.19, stdev=76081.88
    clat (usec): min=4, max=21077K, avg=1768.72, stdev=131857.04
     lat (usec): min=23, max=21077K, avg=2356.23, stdev=152444.62
    clat percentiles (usec):
     |  1.00th=[   29],  5.00th=[   40], 10.00th=[   46], 20.00th=[   52],
     | 30.00th=[   56], 40.00th=[   59], 50.00th=[   63], 60.00th=[   69],
     | 70.00th=[   79], 80.00th=[   99], 90.00th=[  137], 95.00th=[  274],
     | 99.00th=[17024], 99.50th=[25472], 99.90th=[70144], 99.95th=[120320],
     | 99.99th=[1564672]
    bw (KB  /s): min=    2, max=239872, per=66.72%, avg=36217.04, stdev=51480.84
    lat (usec) : 10=0.01%, 20=0.03%, 50=15.58%, 100=64.51%, 250=14.55%
    lat (usec) : 500=1.36%, 750=0.33%, 1000=0.25%
    lat (msec) : 2=0.68%, 4=0.67%, 10=0.71%, 20=0.58%, 50=0.59%
    lat (msec) : 100=0.10%, 250=0.02%, 500=0.01%, 750=0.01%, 1000=0.01%
    lat (msec) : 2000=0.01%, >=2000=0.01%
  cpu          : usr=0.43%, sys=4.81%, ctx=269518, majf=0, minf=110
  IO depths    : 1=0.1%, 2=0.1%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/w=407278/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
  WRITE: io=3181.9MB, aggrb=54282KB/s, minb=54282KB/s, maxb=54282KB/s, mint=60024msec, maxt=60024msec

Disk stats (read/write):
  xvdbd: ios=4/50983, merge=0/319694, ticks=0/2067760, in_queue=2069888, util=26.21%

আমাদের বেসলাইন হয় WRITE: io=3181.9MB; কাঁচা ডিস্ক গতির খুব কাছে।

এখন, WRITE: io=3181.9MBরেফারেন্স হিসাবে জেডএফএসে :

ubuntu@ip-172-31-30-233:~$ sudo zpool create testpool xvdbd -f && (for option in atime=off checksum=off compression=lz4 exec=off logbias=throughput recordsize=8k sync=standard; do sudo zfs set $option testpool; done;) && sudo fio --name randwrite --ioengine=libaio --iodepth=4 --rw=randwrite --bs=8k --size=400G --numjobs=4 --runtime=60 --group_reporting --fallocate=none --filename=/testpool/testfile; sudo zpool destroy testpool
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
...
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
fio-2.1.3
Starting 4 processes
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
Jobs: 4 (f=4): [wwww] [100.0% done] [0KB/41328KB/0KB /s] [0/5166/0 iops] [eta 00m:00s]
randwrite: (groupid=0, jobs=4): err= 0: pid=18923: Tue Feb 14 19:17:18 2017
  write: io=4191.7MB, bw=71536KB/s, iops=8941, runt= 60001msec
    slat (usec): min=10, max=1399.9K, avg=442.26, stdev=4482.85
    clat (usec): min=2, max=1400.4K, avg=1343.38, stdev=7805.37
     lat (usec): min=56, max=1400.4K, avg=1786.61, stdev=9044.27
    clat percentiles (usec):
     |  1.00th=[   62],  5.00th=[   75], 10.00th=[   87], 20.00th=[  108],
     | 30.00th=[  122], 40.00th=[  167], 50.00th=[  620], 60.00th=[ 1176],
     | 70.00th=[ 1496], 80.00th=[ 2320], 90.00th=[ 2992], 95.00th=[ 4128],
     | 99.00th=[ 6816], 99.50th=[ 9536], 99.90th=[30592], 99.95th=[66048],
     | 99.99th=[185344]
    bw (KB  /s): min= 2332, max=82848, per=25.46%, avg=18211.64, stdev=15010.61
    lat (usec) : 4=0.01%, 50=0.09%, 100=14.60%, 250=26.77%, 500=5.96%
    lat (usec) : 750=5.27%, 1000=4.24%
    lat (msec) : 2=20.96%, 4=16.74%, 10=4.93%, 20=0.30%, 50=0.08%
    lat (msec) : 100=0.04%, 250=0.03%, 500=0.01%, 2000=0.01%
  cpu          : usr=0.61%, sys=9.48%, ctx=177901, majf=0, minf=107
  IO depths    : 1=0.1%, 2=0.1%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/w=536527/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
  WRITE: io=4191.7MB, aggrb=71535KB/s, minb=71535KB/s, maxb=71535KB/s, mint=60001msec, maxt=60001msec

লক্ষ্য করুন, এটি এক্সএফএসের চেয়ে আরও ভাল পারফর্ম করেছে WRITE: io=4191.7MB। আমি নিশ্চিত যে এটি সংকোচনের কারণে হয়েছে।

কিক্সের জন্য, আমি একটি দ্বিতীয় ভলিউম যুক্ত করতে যাচ্ছি:

ubuntu@ip-172-31-30-233:~$ sudo zpool create testpool xvdb{c,d} -f && (for option in atime=off checksum=off compression=lz4 exec=off logbias=throughput recordsize=8k sync=standard; do sudo zfs set $option testpool; done;) && sudo fio --name randwrite --ioengine=libaio --iodepth=4 --rw=randwrite --bs=8k --size=400G --numjobs=4 --runtime=60 --group_reporting --fallocate=none --filename=/testpool/testfile; sudo zpool destroy testpool
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
...
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
fio-2.1.3
Starting 4 processes
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
Jobs: 4 (f=4): [wwww] [100.0% done] [0KB/71936KB/0KB /s] [0/8992/0 iops] [eta 00m:00s]
randwrite: (groupid=0, jobs=4): err= 0: pid=20901: Tue Feb 14 19:23:30 2017
  write: io=5975.9MB, bw=101983KB/s, iops=12747, runt= 60003msec
    slat (usec): min=10, max=1831.2K, avg=308.61, stdev=4419.95
    clat (usec): min=3, max=1831.6K, avg=942.64, stdev=7696.18
     lat (usec): min=58, max=1831.8K, avg=1252.25, stdev=8896.67
    clat percentiles (usec):
     |  1.00th=[   70],  5.00th=[   92], 10.00th=[  106], 20.00th=[  129],
     | 30.00th=[  386], 40.00th=[  490], 50.00th=[  692], 60.00th=[  796],
     | 70.00th=[  932], 80.00th=[ 1160], 90.00th=[ 1624], 95.00th=[ 2256],
     | 99.00th=[ 5344], 99.50th=[ 8512], 99.90th=[30592], 99.95th=[60672],
     | 99.99th=[117248]
    bw (KB  /s): min=   52, max=112576, per=25.61%, avg=26116.98, stdev=15313.32
    lat (usec) : 4=0.01%, 10=0.01%, 50=0.04%, 100=7.17%, 250=19.04%
    lat (usec) : 500=14.36%, 750=15.36%, 1000=17.41%
    lat (msec) : 2=20.28%, 4=4.82%, 10=1.13%, 20=0.25%, 50=0.08%
    lat (msec) : 100=0.04%, 250=0.02%, 2000=0.01%
  cpu          : usr=1.05%, sys=15.14%, ctx=396649, majf=0, minf=103
  IO depths    : 1=0.1%, 2=0.1%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/w=764909/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
  WRITE: io=5975.9MB, aggrb=101982KB/s, minb=101982KB/s, maxb=101982KB/s, mint=60003msec, maxt=60003msec

দ্বিতীয় ভলিউম সহ WRITE: io=5975.9MB, সুতরাং লিখুন ~ 1.8X।

তৃতীয় ভলিউম আমাদের দেয় WRITE: io=6667.5MB, সুতরাং লিখুন ~ 2.1X।

এবং একটি চতুর্থ খণ্ড আমাদের দেয় WRITE: io=6552.9MB। এই উদাহরণের ধরণের জন্য, দেখে মনে হচ্ছে যে আমি ইবিএস নেটওয়ার্কটিকে প্রায় দুটি খণ্ড দিয়ে ক্যাপ করেছি, অবশ্যই তিনটি দিয়ে এবং এটি 4 (750 * 3 = 2250 আইওপিএস) এর চেয়ে ভাল নয়।

* এই ভিডিওটি থেকে নিশ্চিত হয়ে নিন যে আপনি সমস্ত EBS ধার্মিকতা পেতে 3.8+ লিনাক্স কার্নেলটি ব্যবহার করছেন।


আকর্ষণীয় ফলাফল। নোট আমি মনে করি আপনি বিভ্রান্ত হয়েছেন WRITE: io=; এটি গতি নয়, এটি সেই সময়ের মধ্যে যে পরিমাণ ডেটা লেখা হয়েছিল। শুধুমাত্র একটি নির্দিষ্ট রানটাইম রয়েছে এমন পরীক্ষার জন্য গতির সাথে সম্পর্কিত তবে অন্যান্য মানদণ্ডের সাথে সঙ্গতি রাখার জন্য IOPS এ ফোকাস করা আরও ভাল iops=। আপনার ক্ষেত্রে ফলাফলগুলি একই রকম হয় আপনি যদি প্রভিশনড আইওপিএস ইবিএস ভলিউম এবং আরও বড় উদাহরণ ব্যবহার করেন তবে আপনি সম্ভবত আরও অনেক ভাল হতে পারেন। উদাহরণস্বরূপ আকারে প্রত্যাশিত EBS ক্যাপগুলির জন্য এই পৃষ্ঠাটি দেখুন । কেবল সাবধান, আপনি সতর্ক না হলে ইবিএস চার্জগুলি দ্রুত বাড়িয়ে তুলবে!
anelson

দুর্দান্ত প্রতিক্রিয়া, ধন্যবাদ @ অ্যানেলসন! বিযুক্ত আইওসগুলিতে তাকিয়ে আছে এবং সেগুলি খুব দামি। যাইহোক, আমি লগ ভলিউমের জন্য একটি ছোট প্রভিশিত আইওস ভলিউম তৈরি করার বিষয়ে বিবেচনা করছিলাম যেখানে জিআইএল লেখা আছে এবং কিছু কার্যকারিতা সুবিধা অর্জন করবে। কোথাও আমি পড়েছি জেডআইএল স্মৃতিতে যা আছে তার চেয়ে বড় হয় না এবং আমি এটি 2 জি-তে সীমাবদ্ধ রেখেছি /etc/modules.d/zfs.conf। পরের প্রশ্নটি হবে ইক 2 উদাহরণ দেওয়ার জন্য উপযুক্ত নম্বরটি কী? আপনি যে পৃষ্ঠাটি উল্লেখ করেছেন সেটির দিকে তাকানো এটি এখনও জটিল and
বার্তো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.