मैं एक फ़ाइल से egrep के साथ eg -p के साथ खींची गई लाइनों का एक सेट बनाने की कोशिश कर रहा हूं, फिर उन्हें गिनें। लगभग 10% लाइनें (वर्णमाला [ATCG] से लंबी सभी 100 वर्ण) दोहराई जाती हैं। दो फाइलें हैं, प्रत्येक के बारे में 3 गिग्स, 50% प्रासंगिक नहीं हैं, इसलिए शायद 300 मिलियन लाइनें।
LC_ALL=C grep -E <files> | sort --parallel=24 -u | wc -m
LC_ALL = C और उपयोग -x के बीच grep को तेज करने के लिए, अब तक का सबसे धीमा हिस्सा है। मैन पेजों को पढ़ने से मुझे - समांतर = n पर ले जाया गया, लेकिन प्रयोग में बिल्कुल सुधार नहीं हुआ। शीर्ष के साथ थोड़ी खुदाई से पता चला है कि यहां तक कि - 24 समानांतर = 24 के साथ, सॉर्ट प्रक्रिया केवल एक समय में एक प्रोसेसर पर चलती है।
मेरे पास 6 कोर और 2 थ्रेड्स / कोर के साथ 4 चिप्स हैं, जो कुल 48 तार्किक प्रोसेसर देते हैं। Lscpu देखें क्योंकि / proc / cpuinfo बहुत लंबा होगा।
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 48
On-line CPU(s) list: 0-47
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 4
NUMA node(s): 8
Vendor ID: AuthenticAMD
CPU family: 21
Model: 1
Stepping: 2
CPU MHz: 1400.000
BogoMIPS: 5199.96
मैं क्या खो रहा हूँ? यहां तक कि अगर प्रक्रिया आईओ-बाउंड है, तो क्या मुझे वैसे भी समानांतर प्रसंस्करण नहीं देखना चाहिए? सॉर्ट प्रक्रिया 99% प्रोसेसर का उपयोग करती है जो वास्तव में किसी भी समय पर होती है, इसलिए यदि ऐसा हो रहा है, तो मुझे समानांतर देखने में सक्षम होना चाहिए। मेमोरी चिंता का विषय नहीं है, मेरे पास खेलने के लिए 256 जीबी है और इसमें से किसी भी चीज का उपयोग नहीं किया जाता है।
मैंने कुछ फ़ाइल में पाइपिंग grep की खोज की, फिर फ़ाइल को सॉर्ट के साथ पढ़ा:
LC_ALL=C grep -E <files> > reads.txt ; sort reads.txt -u | wc -m
default, file 1m 50s
--parallel=24, file 1m15s
--parallel=48, file 1m6s
--parallel=1, no file 10m53s
--parallel=2, no file 10m42s
--parallel=4 no file 10m56s
others still running
इन बेंचमार्क को करने में यह स्पष्ट है कि जब पाइप इनपुट सॉर्ट समानांतर नहीं है। जब फ़ाइल प्रकार को पढ़ने की अनुमति दी जाती है तो निर्देशानुसार लोड को विभाजित किया जाता है।
uname -a
"3.13.0-46-जेनेरिक # 79-उबंटू एसएमपी" देता है और lsb_release -a
14.04.2 कोडनेम भरोसेमंद, और सॉर्ट के संस्करण का दावा करता है कि के अनुसार ग्नू कोर्यूटिल्स का हिस्सा है man sort
।
sort
सा वितरण है? मानकsort
उस विकल्प को नहीं जानता है।