প্রশ্ন কেন জিসেনের অধীনে টিসিপি () পারফরম্যান্স এত খারাপ?


যে হারে আমার সার্ভারটি গ্রহণ করতে পারে () নতুন ইনকামিং টিসিপি সংযোগগুলি Xen এর অধীনে সত্যিই খারাপ। বেয়ার মেটাল হার্ডওয়্যার একই পরীক্ষা 3-5x গতি আপ দেখায়।

  1. জেনে কি এত খারাপ লাগছে?
  2. আপনি নতুন টিসিপি সংযোগগুলির জন্য পারফরম্যান্স উন্নত করতে জেনকে টিম করতে পারেন?
  3. এই ধরনের ব্যবহারের ক্ষেত্রে আরও উপযুক্ত অন্যান্য ভার্চুয়ালাইজেশন প্ল্যাটফর্ম আছে?

পটভূমি

সম্প্রতি আমি জেসের অধীনে চলমান একটি অভ্যন্তরীণ উন্নত জাভা সার্ভারের কিছু পারফরম্যান্সের সমস্যাগুলির সন্ধান করছি। সার্ভারটি HTTP কথা বলে এবং সহজ টিসিপি সংযোগ / অনুরোধ / প্রতিক্রিয়া / বিচ্ছিন্ন কলগুলির উত্তর দেয়।

এমনকি সার্ভারে ট্র্যাফিকের নৌবহর পাঠানোর সময়ও, প্রতি সেকেন্ডে ~ 7000 টিসিপি সংযোগের চেয়ে বেশি গ্রহণ করা যাবে না (8-কোর EC2 ইনস্ট্যান্সে, c1.xlarge Xen চলমান)। পরীক্ষার সময়, সার্ভারটি একটি অদ্ভুত আচরণ প্রদর্শন করে যেখানে একটি কোর (অগত্যা সিপিইউ 0) খুব লোড হয় না> 80%, অন্য কোরে প্রায় অলস থাকে। এর ফলে আমার মনে হয় সমস্যাটি কার্নেল / অন্তর্নিহিত ভার্চুয়ালাইজেশন সম্পর্কিত।

বেয়ার মেটালের একই দৃশ্যটি পরীক্ষা করার সময়, নন-ভার্চুয়ালাইজড প্ল্যাটফর্মটি আমি 35 000 / সেকেন্ডের বাইরে TCP গ্রহণ () হারগুলি দেখানোর পরীক্ষার ফলাফলগুলি পাই। কোর কোর i5 4 কোর মেশিনে এটি সমস্ত কোর সহ উবুন্টুটি প্রায় সম্পূর্ণরূপে সম্পৃক্ত। আমার কাছে যে ধরনের চিত্র সঠিক বলে মনে হয়।

Xen ইনস্ট্যান্সের উপর আবার, আমি sysctl.conf তে প্রায় প্রতিটি সেটিংস সক্ষম / টুইক করার চেষ্টা করেছি। সক্ষম সহ প্যাকেট স্টিয়ারিং পান এবং ফ্লো স্টিয়ারিং পান এবং CPUs থেকে থ্রেড / প্রসেস পিনিং কিন্তু কোন সুস্পষ্ট লাভ সঙ্গে।

আমি degraded কর্মক্ষমতা ভার্চুয়ালাইজড চলমান যখন প্রত্যাশিত হবে জানি। কিন্তু এই ডিগ্রী কি? একটি ধীর, বেয়ার ধাতু সার্ভার Virtue অপারেটিং। একটি ফ্যাক্টর দ্বারা 8-কোর 5?

  1. এই সত্যিই প্রত্যাশিত আচরণ Xen?
  2. আপনি নতুন টিসিপি সংযোগগুলির জন্য পারফরম্যান্স উন্নত করতে জেনকে টিম করতে পারেন?
  3. এই ধরনের ব্যবহারের ক্ষেত্রে আরও উপযুক্ত অন্যান্য ভার্চুয়ালাইজেশন প্ল্যাটফর্ম আছে?

এই আচরণ reproducing

যখন এই আরও তদন্ত এবং সমস্যা pinpointing আমি খুঁজে পাওয়া যায় যে netperf কর্মক্ষমতা পরীক্ষার সরঞ্জাম আমি সম্মুখীন করছি অনুরূপ দৃশ্যকল্প অনুকরণ করতে পারে। নেটপারফ এর TCP_CRR পরীক্ষা ব্যবহার করে আমি বিভিন্ন সার্ভার থেকে বিভিন্ন প্রতিবেদন সংগ্রহ করেছি (ভার্চুয়ালাইজড এবং অ-পিক্ট উভয়।)। আপনি যদি কিছু ফলাফলের সাথে অবদান রাখতে চান বা আমার বর্তমান প্রতিবেদনগুলি সন্ধান করতে চান তবে দয়া করে দেখুন https://gist.github.com/985475

আমি কিভাবে এই সমস্যা দুর্বল লিখিত সফ্টওয়্যার কারণে জানি না?

  1. সার্ভারটি বেয়ার মেটাল হার্ডওয়্যারতে পরীক্ষা করা হয়েছে এবং এটি প্রায় সমস্ত কোর উপলব্ধ রয়েছে।
  2. রাখা-জীবিত টিসিপি সংযোগগুলি ব্যবহার করার সময়, সমস্যাটি চলে যায়।

এটা জরুরী কেন?

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


আপডেট 1

কেউ হ্যাকার নিউজ এই প্রশ্ন পোস্ট, পাশাপাশি সেখানে কিছু প্রশ্ন / উত্তর আছে। কিন্তু আমি বরাবর যেতে হিসাবে আমি এই তথ্য আপ টু ডেট রাখা চেষ্টা করব।

হার্ডওয়্যার / প্ল্যাটফর্ম আমি এটি পরীক্ষা করেছি:

  • EC2 উদাহরণস্বরূপ c1.xlarge (8 কোর, 7 গিগাবাইট র্যাম) এবং cc1.4xlarge (2x Intel Xeon X5570, ২3 গিগাবাইট RAM)। AMI ব্যবহার ami-08f40561 এবং ami-1cad5275 যথাক্রমে ছিল। কেউ এও নির্দেশ করেছে যে "সুরক্ষা গোষ্ঠী" (যেমন EC2 গুলি ফায়ারওয়াল) এছাড়াও প্রভাবিত হতে পারে। কিন্তু এই পরীক্ষার পরিপ্রেক্ষিতে, আমি এই ধরনের বহিরাগত কারণগুলি দূর করার জন্য স্থানীয় হোস্টে শুধুমাত্র চেষ্টা করেছি। আরেকটি গুজব শুনেছি যে ইসি 2 দৃষ্টান্ত 100kPPS এর বেশি push করতে পারে না।
  • Xen চলমান দুটি ব্যক্তিগত ভার্চুয়ালাইজ করা সার্ভার। এক পরীক্ষার আগে শূন্য লোড ছিল কিন্তু একটি পার্থক্য না।
  • ব্যক্তিগত ডেডিকেটেড, জ্যাক সার্ভার Rackspace এ। একই ফলাফল সম্পর্কে।

আমি এই পরীক্ষা পুনরায় চালানোর প্রক্রিয়া এবং রিপোর্ট পূরণের প্রক্রিয়া করছি https://gist.github.com/985475 আপনি যদি সাহায্য করতে চান, আপনার সংখ্যা অবদান। এটি সহজ!

(কর্ম পরিকল্পনা একটি পৃথক, সংহত উত্তর সরানো হয়েছে)


87
2018-05-22 16:39


উত্স


অসাধারণ কাজটি কোনও বিষয়টিকে নির্দেশ করে, তবে আমি বিশ্বাস করি আপনি একটি জেন-নির্দিষ্ট মেলিং তালিকা, সহায়তা ফোরাম বা এমনকি আরও ভাল পরিবেশিত হবেন xensource বাগ রিপোর্ট সাইট। আমি বিশ্বাস করি যে এটি কিছু সময় নির্ধারণকারী বাগ হতে পারে - যদি আপনি 7,000 সংযোগগুলি * 4 কোরে / 0.80 CPU লোডের সংখ্যাগুলি গ্রহণ করেন তবে আপনি ঠিক 35,000 পাবেন - 4 কোরের সম্পূর্ণরূপে সম্পৃক্ত হওয়ার পরে আপনি যে নম্বর পাবেন। - the-wabbit
আহ, এবং আরও একটি জিনিস: আপনার গেস্টের জন্য একটি ভিন্ন (আরও সাম্প্রতিক সম্ভবত) কার্নেল সংস্করণটি চেষ্টা করুন, যদি আপনি করতে পারেন। - the-wabbit
@ সিটিক্টন-ডিজে ধন্যবাদ। আমি EC2 এ কার্নেল 2.6.38 এর সাথে cc1.4xlarge এ এটি চেষ্টা করেছি। আমি ভুল না হলে আমি প্রায় ~ 10% বৃদ্ধি দেখেছি। কিন্তু এটি সম্ভবত উদাহরণস্বরূপ বিফিয়ার হার্ডওয়্যারের কারণে বেশি। - cgbystrom
HN প্রতিক্রিয়ার সাথে আপ টু ডেট রাখার জন্য ধন্যবাদ, এটি একটি দুর্দান্ত প্রশ্ন। আমি সম্ভবত একটি সংহত উত্তরে উত্তর পরিকল্পনাটি সরানোর পরামর্শ দিচ্ছি - কারণ এই সমস্যার সম্ভাব্য উত্তরগুলির সবই হল। - Jeff Atwood
@jeff কর্ম পরিকল্পনা সরান, চেক। - cgbystrom


উত্তর:


এই মুহূর্তে: ছোট প্যাকেট কর্মক্ষমতা Xen অধীনে sucks

(পরিবর্তে প্রশ্ন থেকে পৃথক আলাদা উত্তর থেকে সরানো)

এইচএনএর একটি ব্যবহারকারীর মতে (একটি কেভিএম বিকাশকারী?) এইটি জেন ​​এবং ছোট্ট কেভিভিতেও ছোট প্যাকেটের কর্মক্ষমতা। এটি ভার্চুয়ালাইজেশনের একটি পরিচিত সমস্যা এবং তার মতে, ভিএমওয়্যারের এসএসএক্স এটিকে আরও ভালভাবে পরিচালনা করে। তিনি উল্লেখ করেছেন যে কেভিএম নকশাকৃত কিছু নতুন বৈশিষ্ট্য আনয়ন করছে এই (মূল পোস্ট)।

এটি সঠিক যদি এই তথ্য একটি বিট নিরুৎসাহিত করা হয়। যাইহোক, কিছু জেন জুরু একটি নিশ্চিত উত্তর বরাবর আসে পর্যন্ত আমি নীচের পদক্ষেপ চেষ্টা করব :)

Xen-users মেইলিং তালিকা থেকে ইয়ান Kay এই গ্রাফ সংকলিত: netperf graph TCP_CRR বারগুলিতে লক্ষ্য করুন, "2.6.18-239.9.1.el5" বনাম "2.6.39 (জিন 4.1.0 সহ)" তুলনা করুন।

এখানে এবং থেকে প্রতিক্রিয়া / উত্তর উপর ভিত্তি করে বর্তমান কর্ম পরিকল্পনা এইচ এন:

  1. এই সমস্যাটি একটি জেন-নির্দিষ্ট মেইলিং তালিকা এবং xensource এর বাগিজিলাকে সিঙ্কনেটন-ডিজে প্রস্তাবিতভাবে জমা দিন একজন বার্তাটি জেন-ব্যবহারকারী তালিকাতে পোস্ট করা হয়েছে, জবাবের অপেক্ষা.

  2. একটি সহজ প্যাথলিক, অ্যাপ্লিকেশন-স্তর পরীক্ষা ক্ষেত্রে তৈরি করুন এবং এটি প্রকাশ করুন।
    নির্দেশাবলীর সাথে একটি পরীক্ষা সার্ভার তৈরি করা হয়েছে এবং GitHub প্রকাশিত। এটির সাথে নেটপারফের তুলনায় আপনি আরো বাস্তব-বিশ্বব্যবহারযোগ্য ব্যবহার দেখতে সক্ষম হবেন।

  3. 32-বিট PV Xen গেস্ট ইনস্ট্যান্সটি চেষ্টা করুন, কারণ 64-বিট জিনে আরো ওভারহেড হতে পারে। কেউ এইচএন এই উল্লেখ। একটি পার্থক্য না।

  4. Synctl.conf তে net.ipv4.tcp_syncookies সক্ষম করার চেষ্টা করুন যেমন HN এ abofh দ্বারা প্রস্তাবিত। এই দৃশ্যত হতে পারে কার্নেলের মধ্যে হ্যান্ডশেক ঘটলে কার্য সম্পাদন উন্নত করুন। আমি এই সঙ্গে কোন ভাগ্য ছিল।

  5. 1024 থেকে কিছু উচ্চতর ব্যাকলগ বৃদ্ধি করুন, এছাড়াও HN এ abofh দ্বারা প্রস্তাবিত। এটি guest0 (হোস্ট) দ্বারা প্রদত্ত তার নির্বাহকরণ স্লাইসের সময় সম্ভাব্যভাবে () আরও সংযোগ গ্রহণ করতে পারে বলেও এটি সাহায্য করতে পারে।

  6. সব মেশিনে conntrack নিষ্ক্রিয় করা হয়েছে তা পরীক্ষা করে দেখুন কারণ এটি গ্রহণযোগ্য হারটি হেলভ করতে পারে (deubeulyou দ্বারা প্রস্তাবিত)। হ্যাঁ, এটি সব পরীক্ষা নিষ্ক্রিয় ছিল।

  7. "নেটউইট-এস-তে শোনাতে থাকা সারি ওভারফ্লো এবং সিঙ্কাশে buckets ওভারফ্লো" এর জন্য চেক করুন (HN এ মাইক_সেপের দ্বারা প্রস্তাবিত)।

  8. একাধিক কোরগুলির মধ্যে বিঘ্ন হ্যান্ডলিংটি বিভক্ত করুন (RPS / RFS আমি আগে সক্ষম করার চেষ্টা করেছি এটি করা উচিত বলে মনে হচ্ছে তবে আবার চেষ্টা করার যোগ্য হতে পারে)। HN এ adamt দ্বারা প্রস্তাবিত।

  9. ম্যাট বেলে প্রস্তাবিত টিসিপি সেগমেন্টেশন অফलोड এবং স্ক্যাটার / অ্যাক্সেস অ্যাক্সেসেশন বন্ধ করানো। (EC2 বা অনুরূপ ভিপিএস হোস্টগুলিতে সম্ভব নয়)


26
2018-05-22 23:41



+1 আপনি যখন খুঁজে পেয়েছেন তখন অবশ্যই কার্য সম্পাদন ফলাফল পোস্ট করুন! - chrisaycock
কেউ এই প্রশ্ন সম্পর্কে টুইটারে আমাকে পোকা করেছে। দুর্ভাগ্যবশত, এই সমস্যা অব্যাহত হিসাবে মনে হচ্ছে। আমি গত বছর থেকে অনেক গবেষণা করা হয়নি। জেস মে এই সময় উন্নত হয়েছে, আমি জানি না। KVM ডেভেলপার এছাড়াও তারা এই মত সমস্যা মোকাবেলার উল্লেখ করা হয়েছে। অনুসরণ pursuing হতে পারে। এছাড়াও, আমি শুনেছি যে অন্য সুপারিশটি হল Xen / KVM এর পরিবর্তে ওপেনভিজেড ব্যবহার করার কারণ এটি কম বা কোন লেয়ারিং / সিস্কলগুলির মধ্যে বিরতি যোগ করে না। - cgbystrom


অদ্ভুতভাবে, আমি দেখেছি যে এনআইসি হার্ডওয়্যার অ্যাক্সিলারেশন বন্ধ করা জিন কন্ট্রোলার (এলএক্সএক্সের জন্যও সত্য) এ নেটওয়ার্ক কর্মক্ষমতা ব্যাপকভাবে উন্নত করে:

ছিঁচকে-জড়ো accell:

/usr/sbin/ethtool -K br0 sg off

টিসিপি সেগমেন্টেশন অফলোড:

/usr/sbin/ethtool -K br0 tso off

যেখানে br0 হাইপারভাইজার হোস্টে আপনার সেতু বা নেটওয়ার্ক ডিভাইস। আপনি প্রতিটি বুট এ এটি বন্ধ করতে সেট আপ করতে হবে। YMMV।


20
2018-05-22 19:09



আমিও একমত. জিনে চলমান একটি উইন্ডোজ 2003 সার্ভার ছিল যা উচ্চ থেরাপ্ট অবস্থার অধীনে কিছু ভয়ঙ্কর প্যাকেট ক্ষতি সমস্যা ভোগ করে। যখন আমি টিসিপি সেগমেন্ট অফলোড নিষ্ক্রিয় করেছিলাম তখন সমস্যাটি চলে গেল - rupello
ধন্যবাদ। আমি আপনার পরামর্শ দিয়ে মূল প্রশ্নে "কর্ম পরিকল্পনা" আপডেট করেছি। - cgbystrom
আরো দেখুন cloudnull.io/2012/07/xenserver-network-tuning - Lari Hotari


হয়তো আপনি সামান্য বিট স্পষ্ট করতে পারেন - আপনি কি আপনার নিজের সার্ভারে Xen এর অধীনে পরীক্ষা চালাতে পেরেছেন, নাকি শুধুমাত্র EC2 দৃষ্টান্তে?

স্বীকার করুন শুধু আরেকটি সিস্কাল এবং নতুন সংযোগগুলি কেবলমাত্র আলাদা আলাদা প্যাকগুলিতে কিছু নির্দিষ্ট ফ্ল্যাগ থাকবে - হাইপারভাইজার যেমন Xen অবশ্যই কোনও পার্থক্য দেখবে না। আপনার সেটআপের অন্যান্য অংশগুলি হতে পারে: উদাহরণস্বরূপ EC2 তে, যদি নিরাপত্তা গোষ্ঠীগুলির সাথে এটি করার কিছু থাকে তবে আমি অবাক হব না; conntrack এছাড়াও হয় নতুন সংযোগ হার মান রিপোর্ট রিপোর্ট (পিডিএফ)

অবশেষে, সিপিও / কার্নেল সমন্বয়গুলি মনে হচ্ছে যা EC2 (এবং সম্ভবত জেন জেনারেল) এ অদ্ভুত CPU ব্যবহার / hangups সৃষ্টি করে, যেমন সম্প্রতি Librato দ্বারা ব্লগ


2
2018-05-22 19:56



আমি প্রশ্নটি হালনাগাদ করেছি এবং ব্যাখ্যা করেছি যে আমি এই হার্ডওয়্যারটি কীভাবে চেষ্টা করেছি। abofh অতিথির জন্য এক্সিকিউশন স্লাইসের সময় সম্ভাব্য গ্রহণ () গুলি সংখ্যা দ্রুত গতিতে 1024 অতিক্রম করে ব্যাকলগ বৃদ্ধি করার পরামর্শ দেয়। Conntrack সম্পর্কে, আমি নিশ্চিতভাবে এই জিনিস অক্ষম করা হয়, ধন্যবাদ, ডবল চেক করা উচিত। আমি লিবারেটো নিবন্ধটি পড়েছি কিন্তু বিভিন্ন হার্ডওয়ারের পরিমাণ আমি চেষ্টা করেছিলাম, এটি কেস হওয়া উচিত নয়। - cgbystrom


Dom0 এ ব্রিজিং কোডে আপনি iptables এবং অন্যান্য হুকগুলি অক্ষম করেছেন কিনা তা নিশ্চিত করুন। স্পষ্টত এটি শুধুমাত্র সেতু নেটওয়ার্কিং জেন সেটআপ প্রযোজ্য।

echo 0 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 0 > /proc/sys/net/bridge.bridge-nf-call-arptables

এটি সার্ভারের আকারের উপর নির্ভর করে তবে ছোটদের (4-কোর প্রসেসর) Xen dom0 এ একটি সিপিই কোরকে উৎসর্গ করে এবং এটি পিন করে। Hypervisor বুট বিকল্প:

dom0_max_vcpus=1 dom0_vcpus_pin dom0_mem=<at least 512M>

আপনি domu থেকে শারীরিক ইথারনেট পিসিআই ডিভাইস পাস করার চেষ্টা করেছিলেন? চমৎকার কর্মক্ষমতা বৃদ্ধি করা উচিত।


0
2018-02-11 11:35