জিএনইউ / লিনাক্স -O3 অপ্টিমাইজেশান সংকলন


18

এটি বলা হয়ে থাকে যে জিএনইউ সরঞ্জামগুলি এবং লিনাক্স কার্নেলকে -O3জিসিসি অপ্টিমাইজেশান বিকল্পের সাথে সংকলন করা অদ্ভুত এবং মজাদার বাগ তৈরি করবে। এটা সত্যি? কেউ এটি চেষ্টা করেছে বা এটি কেবল একটি প্রতারণা?


আকর্ষণীয়ভাবে -O0মোটেও সমর্থন করা হয় না! stackoverflow.com/questions/29151235/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

উত্তর:


8

এটি জেন্টুতে ব্যবহৃত হয়েছে, এবং আমি অস্বাভাবিক কিছু লক্ষ্য করিনি।


8
তবে দয়া করে নোট করুন যে -O3 প্রায়শই ebuilds দ্বারা ফিল্টার করা হয়।
ম্যাকিয়েজ পাইচোটকা

17

-O3 বিভিন্ন অসুবিধা রয়েছে:

  1. প্রথমত এটি প্রায়শই -O2বা এর চেয়ে ধীর কোড উৎপন্ন করে -Os। কখনও কখনও লুপ আনআরোলিংয়ের কারণে এটি দীর্ঘতর কোড তৈরি করে যা কোডের আরও খারাপ ক্যাশে পারফরম্যান্সের কারণে আসলে ধীর হতে পারে।
  2. যেমনটি বলা হয়েছিল এটি কখনও কখনও ভুল কোড তৈরি করে। এটি হয় অনুকূলকরণের ত্রুটির কারণে বা কোডে ত্রুটির কারণে (যেমন কঠোরভাবে উপেক্ষা করা উপেক্ষা করে) হতে পারে। কার্নেল কোডটি কখনও কখনও হয় এবং কখনও কখনও 'স্মার্ট' হতে হয় আমি বলতাম এটি সম্ভব যে কোনও কার্নেল বিকাশকারী কিছু ত্রুটি করেছিলেন। আমি ইউজারস্পেস ইউটিলিটিগুলি ক্র্যাশ করার মতো বিভিন্ন অদ্ভুত সমস্যাগুলি অনুভব করেছি, যখন আমি যখন জিসিসি ৪.৪ দিয়ে কার্নেলটি সঙ্কলন করেছি যা তখন স্থিতিশীল ছিল। আমি এখনও বিভিন্ন বাগের কারণে কার্নেল এবং কয়েকটি নির্বাচিত ইউজারস্পেস ইউটিলিটিগুলির জন্য জিসিসি ৪.৪ ব্যবহার করি। একই জন্য আবেদন করতে পারে -O3
  3. আমি মনে করি না এটি লিনাক্স কার্নেলের জন্য খুব বেশি সুবিধা দেয়। কার্নেলটি ভারী গণনা করে না এবং যে জায়গাগুলিতে এটি করে, এটি সমাবেশের সাথে অনুকূল হয়। -O3পতাকা প্রসঙ্গের স্যুইচিং বা আই / ও এর গতির পরিবর্তিত করবে না । আমি মনে করি না সামগ্রিক পারফরম্যান্সের <0.1% স্পিডআপ এর মতো কিছু মূল্যবান।

6
লিনাক্স -ফনো-কড়া-আলিয়াজিংয়ের সাথে সংকলিত হয়েছে যেহেতু লিনাস মনে করে যে জিসিসি বোকা এবং অত্যধিক নিয়ন্ত্রক কারণ এটি নির্দ্বিধায় স্পষ্টত না হলেও এটি মূর্খ বিষয়গুলিকে আলাদা হিসাবে বিবেচনা করে (যেমন এলিয়াসিংটি একটি ফাংশনের অভ্যন্তরে প্রবর্তিত হয়েছিল এবং সংকলকটি করতে পারে) এটা দেখ). দেখতে mail-archive.com/linux-btrfs@vger.kernel.org/msg01647.html
Spudd86

@ স্পুড 8686: তার অর্থ কি এগুলি স্পষ্টতই মানুষের পড়া কোড বা সংকলকের জন্য নয়? যেমনটি আমি বলেছি - কার্নেলের মাঝে মাঝে স্মার্ট জিনিসগুলি করা প্রয়োজন যা ব্যবহারকারীর স্পেস প্রোগ্রামগুলি করা উচিত নয়। ব্যবহারকারীক্ষেত্রের জন্য যা বোঝা যায় (কিছু ক্ষেত্রে ভারী অনুকূলকরণ) কার্নেলটির জন্য কোনও ধারণা রাখে না (বিভিন্ন স্থানে স্মার্ট কোড + বিরাট পরিমাণে বাধা)।
ম্যাকিয়েজ পাইচোটকা

1
তিনি যা বলেছিলেন তা ইউজারস্পেসেও প্রযোজ্য।
স্পুদ 86

1
@ স্পুড 8686: আমি তখন এর সাথে একমত নই। এ জাতীয় 'স্পষ্টত' জিনিস চিহ্নিত করার জন্য সংকলককে 'যথেষ্ট স্মার্ট' তৈরি করা তুচ্ছ নয়। সুতরাং একমাত্র সম্ভাব্য উপায় হ'ল) ​​আস্তে আস্তে (এর) কোড তৈরি করুন (যা কিছু ব্যবহারের ক্ষেত্রে গ্রহণযোগ্য, যেমন এইচপিসি হিসাবে গ্রহণযোগ্য নয়) এবং / অথবা প্রোগ্রামারগুলিকে ম্যানুয়ালি কোডটি অপ্টিমাইজ করার জন্য খ) বিধিগুলিকে কঠোর করে 'ডাম্বার' অনুমোদন করুন অনুকূলকরণ করতে সংকলক - সি স্ট্যান্ডার্ড দ্বারা গৃহীত রুট।
ম্যাকিয়েজ পাইচোটকা

6

মনে রাখবেন যে টুলচেইনের বড় অংশগুলি (বিশেষত গ্লিবসি) ফ্ল্যাট আউট আপনি অপ্টিমাইজেশনের স্তর পরিবর্তন করলে সংকলন করে না। বেশিরভাগ বুদ্ধিমান ডিস্ট্রোজে এই বিভাগগুলির জন্য আপনার -O পছন্দগুলি উপেক্ষা করতে বিল্ড সিস্টেমটি সেটআপ করা হয়েছে।

সহজ কথায়, কিছু মৌলিক গ্রন্থাগার এবং ওএস বৈশিষ্ট্যগুলি কোড যা বলে তা আসলে তার উপর নির্ভর করে, অনেক ক্ষেত্রে দ্রুত কী হবে তা নয়। বিশেষত -fgcse-after-reload (-O3 দ্বারা সক্ষম) অদ্ভুত সমস্যা সৃষ্টি করতে পারে।


5

গত 10 বছর ধরে আমি -O3 -march=nativeবিশ্বব্যাপী 1000+ প্যাকেজ ব্যবহার করে একাধিক জেন্টু সিস্টেম চালাচ্ছি এবং এখনও এই পৌরাণিক স্থিতিশীলতার যে কোনও সমস্যা -O3রয়েছে বলে মনে করা হচ্ছে। সিপিইউ নিবিড় অ্যাপ্লিকেশনগুলির মানদণ্ড (যেমন গণিত / বিজ্ঞান অ্যাপ্লিকেশন) ধারাবাহিকভাবে -O3দ্রুত কোড উত্পাদন করতে দেখায় , সর্বোপরি এটি যদি তা না হয় তবে তা অর্থহীন হবে। বেশিরভাগ ডেস্কটপ অ্যাপ্লিকেশনগুলিতে CFLAGSআইও আবদ্ধ হওয়ার কারণে সেগুলি তেমন গুরুত্ব দেয় না, তবে সিপিইউযুক্ত সার্ভারের পাশের স্টাফগুলির জন্য এটি অনেক গুরুত্বপূর্ণ।


3

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


এটি সবসময় দ্রুত হয় না তা উল্লেখ না করে, আপনাকে অবশ্যই বেঞ্চমার্কগুলি নিয়ে আসতে হবে এবং -O2আবহাওয়া জানতে বা এটির ব্যথা বা সহায়তা করে না বনাম এটি পরীক্ষা করতে হবে
স্পড 8686

0

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

এটি সম্পর্কে চিন্তা করুন: কী রেড এবং এক্সট 3 সাবসিস্টেমগুলির মূল্যবান সিস্টেম ক্র্যাশ বা সম্ভাব্য ডেটা ক্ষতি এবং / বা দুর্নীতির 5% কার্যকারিতা অর্জন?

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


3
আমি জিজ্ঞাসা করছি না এটির মূল্য আছে কি না, নিরাপদ বা না, বা কেন আমাদের এটি করা উচিত নয়, যা আমি জিজ্ঞাসা করছি তা সত্য, এটি কি সত্যিকারের প্রয়োগে বাগ তৈরি করে ?, এটি কি কখনও ঘটেছিল ?, এটি কি প্রমাণ করেছে ..
uray
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.