คำถามติดแท็ก parallelism

ทำงานแบบคู่ขนานเพื่อใช้ประโยชน์จากโปรเซสเซอร์หลายตัว

15
เรียกใช้คำสั่งผ่าน SSH บนเซิร์ฟเวอร์หลายเครื่องโดยอัตโนมัติ
มีรายการที่อยู่ IP ในไฟล์. txt เช่น: 1.1.1.1 2.2.2.2 3.3.3.3 ที่อยู่ IP ทุกหลังมีเซิร์ฟเวอร์และทุกเซิร์ฟเวอร์มี sshd ที่ทำงานอยู่ที่พอร์ต 22 ไม่ใช่เซิร์ฟเวอร์ทุกเครื่องที่อยู่ในknown_hostsรายการ (บนพีซีของฉัน Ubuntu 10.04 LTS / bash) ฉันจะรันคำสั่งบนเซิร์ฟเวอร์เหล่านี้และรวบรวมผลลัพธ์ได้อย่างไร เป็นการดีที่ฉันต้องการเรียกใช้คำสั่งแบบขนานบนเซิร์ฟเวอร์ทั้งหมด ฉันจะใช้การรับรองความถูกต้องของรหัสสาธารณะในเซิร์ฟเวอร์ทั้งหมด นี่คือข้อผิดพลาดที่อาจเกิดขึ้น: ssh แจ้งให้ฉันใส่คีย์ ssh ของเซิร์ฟเวอร์ที่ระบุลงในknown_hostsไฟล์ของฉัน คำสั่งที่กำหนดอาจส่งคืนโค้ดการออกที่ไม่ใช่ศูนย์ซึ่งบ่งชี้ว่าเอาต์พุตอาจไม่ถูกต้อง ฉันต้องยอมรับว่า การเชื่อมต่ออาจล้มเหลวในการสร้างไปยังเซิร์ฟเวอร์ที่กำหนดตัวอย่างเช่นเนื่องจากข้อผิดพลาดของเครือข่าย ควรมีการหมดเวลาในกรณีที่คำสั่งรันนานกว่าที่คาดไว้หรือเซิร์ฟเวอร์หยุดทำงานในขณะที่รันคำสั่ง เซิร์ฟเวอร์คือ AIX / ksh (แต่ฉันคิดว่ามันไม่สำคัญ

3
คำสั่งด้านบนของโปรเซสเซอร์แบบมัลติคอร์
ฉันใช้หน่วยประมวลผล Quad freescale IMX6 ฉันต้องการทราบว่าtopคำสั่งแสดงรายการการใช้งาน CPU ของทั้ง 4 คอร์หรือแกนเดียว ฉันเห็นการใช้งาน CPU ของแอปพลิเคชันเหมือนกันกับ 4 คอร์และมีแกนเดียว ฉันเดาว่าการใช้งาน CPU โดยแอปพลิเคชันจะเพิ่มขึ้นในแกนเดียวและลดลงใน 4 คอร์ แต่ก็ไม่ได้เปลี่ยน

3
จะเริ่ม grep แบบหลายเธรดในเทอร์มินัลได้อย่างไร?
ฉันมีโฟลเดอร์ที่มี 250 ไฟล์ไฟล์ละ 2 GB ฉันต้องการค้นหาสตริง / รูปแบบในไฟล์เหล่านั้นและส่งออกผลลัพธ์ในoutputไฟล์ ฉันรู้ว่าฉันสามารถเรียกใช้คำสั่งต่อไปนี้ แต่ช้าเกินไป !! grep mypattern * > output ฉันต้องการเพิ่มความเร็ว การเป็นโปรแกรมเมอร์ใน Java ฉันรู้ว่าสามารถใช้มัลติเธรดเพื่อเร่งกระบวนการได้ ฉันติดอยู่กับวิธีการเริ่มต้นgrepใน "โหมดมัลติเธรด" และเขียนผลลัพธ์ลงในoutputไฟล์เดียว
38 grep  parallelism 

2
ฉันจะกระจายการดาวน์โหลดขนาดใหญ่ผ่านคอมพิวเตอร์หลายเครื่องได้อย่างไร
ฉันต้องดาวน์โหลดไฟล์ขนาดใหญ่ (1GB) ฉันยังสามารถเข้าถึงคอมพิวเตอร์หลายเครื่องที่ใช้ Linux แต่แต่ละเครื่องถูก จำกัด ความเร็วในการดาวน์โหลด 50kB / s โดยนโยบายการดูแลระบบ ฉันจะกระจายการดาวน์โหลดไฟล์นี้ในคอมพิวเตอร์หลายเครื่องและรวมไฟล์เหล่านั้นหลังจากดาวน์โหลดกลุ่มทั้งหมดเพื่อให้ฉันสามารถรับได้เร็วขึ้น

15
ฉันจะรันคำสั่ง linux เดียวกันในแท็บ / เชลล์มากกว่าหนึ่งรายการพร้อมกันได้อย่างไร
มีเครื่องมือ / คำสั่งใน Linux ที่ฉันสามารถใช้เพื่อเรียกใช้คำสั่งในมากกว่าหนึ่งแท็บพร้อมกันหรือไม่ ฉันต้องการรันคำสั่งเดียวกัน: ./myprog argument1 argument2พร้อมกันในเชลล์มากกว่าหนึ่งอันเพื่อตรวจสอบว่า mutex ทำงานได้ดีในโปรแกรม threaded หรือไม่ ฉันต้องการเพิ่มจำนวนอินสแตนซ์ของโปรแกรมนี้เพื่อใส่รหัสของฉันภายใต้ความเครียดในภายหลัง ฉันกำลังมองหาบางอย่างที่กำแพงทำ ฉันสามารถนึกถึงการใช้ tty ได้ แต่มันก็ดูเหมือนจะเจ็บปวดมากถ้าฉันต้องไต่ระดับนี้ให้มากขึ้น

4
วิธีการกำหนดจำนวนสูงสุดที่จะผ่านไปยังตัวเลือก -j?
ฉันต้องการรวบรวมให้เร็วที่สุด ไปคิด และต้องการให้ตัวเลือกของตัวเลขตาม-jตัวเลือกโดยอัตโนมัติ ฉันจะเลือกค่านั้นโดยทางโปรแกรมเช่นในเชลล์สคริปต์ได้อย่างไร เอาต์พุตของnprocเทียบเท่ากับจำนวนเธรดที่ฉันมีให้คอมไพล์ด้วยหรือไม่? make -j1 make -j16

6
คำนวณการย่อยหลายรายการพร้อมกัน (md5, sha256) พร้อมกันไหม
ภายใต้สมมติฐานว่าดิสก์ I / O และ RAM ว่างเป็นคอขวด (ในขณะที่เวลาของ CPU ไม่ จำกัด ) เครื่องมือมีอยู่ที่สามารถคำนวณการย่อยข้อความได้หลายข้อความพร้อมกันหรือไม่? ฉันสนใจเป็นพิเศษในการคำนวณการแยกย่อยของไฟล์ขนาดใหญ่ MD-5 และ SHA-256 (ขนาดเป็นกิกะไบต์) โดยเฉพาะอย่างยิ่งในแบบคู่ขนาน ฉันได้ลองopenssl dgst -sha256 -md5แล้ว แต่มันจะคำนวณแฮชโดยใช้อัลกอริทึมเดียวเท่านั้น รหัสหลอกสำหรับพฤติกรรมที่คาดหวัง: for each block: for each algorithm: hash_state[algorithm].update(block) for each algorithm: print algorithm, hash_state[algorithm].final_hash()

4
สี่งานพร้อมกัน…ฉันจะทำอย่างไร
ฉันมีรูปภาพ PNG จำนวนหนึ่งอยู่ในไดเรกทอรี ฉันมีแอปพลิเคชันชื่อ pngout ที่ฉันเรียกใช้เพื่อบีบอัดรูปภาพเหล่านี้ แอปพลิเคชันนี้ถูกเรียกใช้โดยสคริปต์ที่ฉันทำ ปัญหาคือสคริปต์นี้ทำทีละครั้งสิ่งนี้: FILES=(./*.png) for f in "${FILES[@]}" do echo "Processing $f file..." # take action on each file. $f store current file name ./pngout -s0 $f R${f/\.\//} done การประมวลผลครั้งละหนึ่งไฟล์ใช้เวลานาน หลังจากเรียกใช้แอพนี้ฉันเห็นว่าซีพียูเพียง 10% ดังนั้นฉันจึงค้นพบว่าฉันสามารถแบ่งไฟล์เหล่านี้ออกเป็น 4 แบทช์แต่ละแบทช์ในไดเรกทอรีและไฟ 4 จากสี่หน้าต่างเทอร์มินัลสี่กระบวนการสี่ดังนั้นฉันมีสี่อินสแตนซ์ของสคริปต์ของฉันในเวลาเดียวกัน งานใช้เวลา 1/4 ของเวลา ปัญหาที่สองคือฉันเสียเวลาในการแบ่งภาพและแบทช์และคัดลอกสคริปต์ไปยังสี่ไดเรกทอรีเปิด windows terminal 4, bla …

8
การเรียกใช้สคริปต์ทุบตีหลาย ๆ ชุดและเรียกใช้พร้อมกันไม่ใช่เรียงตามลำดับ
สมมติว่าฉันมีสาม (หรือมากกว่า) สคริปต์ทุบตี: script1.sh, และscript2.sh script3.shผมอยากจะเรียกทั้งสามของสคริปต์เหล่านี้และเรียกพวกเขาในแบบคู่ขนาน วิธีหนึ่งในการทำเช่นนี้คือเพียงเรียกใช้คำสั่งต่อไปนี้ nohup bash script1.sh & nohup bash script2.sh & nohup bash script3.sh & (โดยทั่วไปสคริปต์อาจใช้เวลาหลายชั่วโมงหรือหลายวันจึงจะเสร็จสิ้นดังนั้นฉันต้องการใช้nohupเพื่อให้สคริปต์ทำงานต่อไปแม้ว่าคอนโซลของฉันจะปิด) แต่มีวิธีใดบ้างที่จะดำเนินการคำสั่งทั้งสามนี้ควบคู่กับการโทรครั้งเดียว ? ฉันกำลังคิดอะไรบางอย่างเช่น nohup bash script{1..3}.sh & แต่นี้จะปรากฏในการดำเนินการscript1.sh, script2.shและscript3.shในลำดับที่ไม่ได้อยู่ในแบบคู่ขนาน

6
การใช้ขนานเพื่อประมวลผลไฟล์อินพุตเฉพาะไปยังไฟล์เอาต์พุตที่ไม่ซ้ำกัน
ฉันมีปัญหาการเขียนสคริปต์เชลล์ซึ่งฉันได้รับไดเรกทอรีที่เต็มไปด้วยไฟล์อินพุต (ไฟล์แต่ละไฟล์มีหลายบรรทัดอินพุต) และฉันจำเป็นต้องประมวลผลเป็นรายบุคคลโดยเปลี่ยนเส้นทางผลลัพธ์แต่ละไฟล์ไปเป็นไฟล์ที่ไม่ซ้ำกัน (aka, file_1.input ที่จะถูกจับใน file_1.output และอื่น ๆ ) พรีขนานฉันจะทำซ้ำแต่ละไฟล์ในไดเรกทอรีและดำเนินการคำสั่งของฉันในขณะที่ทำเทคนิคการจับเวลา / การเรียงลำดับบางอย่างเพื่อไม่เอาชนะโปรเซสเซอร์ (สมมติว่าแต่ละกระบวนการมีรันไทม์คงที่) อย่างไรก็ตามฉันรู้ว่ามันไม่ได้เป็นอย่างนั้นเสมอไปดังนั้นการใช้ "แบบขนาน" อย่างโซลูชันดูเหมือนจะเป็นวิธีที่ดีที่สุดในการรับเชลล์สคริปต์แบบมัลติเธรดโดยไม่ต้องเขียนโค้ดที่กำหนดเอง ในขณะที่ฉันคิดว่าจะใช้วิธีใดวิธีหนึ่งในการจัดการไฟล์เหล่านี้ (และทำให้ฉันสามารถจัดการคอร์ได้อย่างมีประสิทธิภาพ) พวกเขาทั้งหมดดูเหมือนแฮ็ค ฉันมีสิ่งที่ฉันคิดว่าเป็นกรณีการใช้งานที่ค่อนข้างง่ายดังนั้นฉันต้องการให้มันสะอาดที่สุดเท่าที่จะเป็นไปได้ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม! ตัวอย่างไดเรกทอรีอินพุต: > ls -l input_files/ total 13355 location1.txt location2.txt location3.txt location4.txt location5.txt สคริปต์: > cat proces_script.sh #!/bin/sh customScript -c 33 -I -file [inputFile] -a -v 55 …

2
วิธีการหยุด xargs จากการรวมเอาท์พุทจากกระบวนการหลายอย่างไม่ดี?
ฉันกำลังใช้xargsกับตัวเลือก--max-args=0(หรือ-P 0) อย่างไรก็ตามเอาต์พุตของกระบวนการถูกรวมเข้ากับstdoutสตรีมโดยไม่คำนึงถึงการแยกบรรทัดที่เหมาะสม ดังนั้นฉันมักจะจบลงด้วยบรรทัดเช่น: <start-of-line-1><line-2><end-of-line-1> ในขณะที่ฉันใช้egrepกับ^ในรูปแบบของฉันในxargsผลลัพธ์ทั้งหมดนี้จะทำให้สับสนผลลัพธ์ของฉัน มีวิธีบังคับxargsให้เขียนผลลัพธ์ของกระบวนการตามลำดับ (คำสั่งใด ๆ ตราบใดที่ผลลัพธ์ของหนึ่งกระบวนการนั้นต่อเนื่องกัน)? หรือวิธีการแก้ปัญหาอื่น ๆ ? แก้ไข:รายละเอียดเพิ่มเติมเกี่ยวกับกรณีการใช้งาน: ฉันต้องการดาวน์โหลดและแยกหน้าเว็บจากโฮสต์ที่แตกต่างกัน เนื่องจากทุกหน้าใช้เวลาประมาณหนึ่งวินาทีในการโหลดและมีหน้าเว็บไม่กี่โหลที่ฉันต้องการขนานการร้องขอ คำสั่งของฉันมีแบบฟอร์มต่อไปนี้: echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \ wget -q -O- http://{}/somepage.html | egrep --count '^string' ฉันใช้ bash และไม่ใช่อย่าง Perl เพราะ host IP (ตัวแปร $ IP) และข้อมูลอื่น ๆ …

4
วิธีรันกระบวนการแบบขนานและรวมเอาต์พุตเมื่อทั้งคู่เสร็จสิ้น
ฉันมีสคริปต์ทุบตีเปลือกที่ฉันท่อข้อมูลบางอย่างผ่านประมาณ 5 หรือ 6 โปรแกรมที่แตกต่างกันแล้วผลสุดท้ายเป็นไฟล์ที่คั่นด้วยแท็บ ฉันจะทำเช่นเดียวกันอีกครั้งสำหรับชุดข้อมูลที่คล้ายกันและส่งออกไปยังไฟล์ที่สอง จากนั้นไฟล์ทั้งสองจะถูกป้อนเข้าสู่โปรแกรมอื่นสำหรับการวิเคราะห์เปรียบเทียบ เช่นเพื่อลดความซับซ้อน Data1 | this | that |theother | grep |sed | awk |whatever > Data1Res.csv Data2 | this | that |theother | grep |sed | awk |whatever > Data2Res.csv AnalysisProg -i Data1res.csv Data2res.csv คำถามของฉันคือฉันจะทำให้ขั้นตอนที่ 1 และขั้นที่ 2 ในเวลาเดียวกัน (เช่นการใช้ &) แต่เปิดตัวเพียงขั้นตอนที่ 3 (AnalysisProg) …

5
วิธีการรันสคริปต์แบบขนานบนเครื่องระยะไกล
ฉันสามารถ ssh ลงในเครื่องระยะไกลที่มี 64 คอร์ ให้บอกว่าฉันต้องรันเชลล์สคริปต์ 640 แบบขนานบนเครื่องนี้ ฉันจะทำสิ่งนี้ได้อย่างไร ฉันเห็นการแบ่ง 640 สคริปต์ออกเป็น 64 กลุ่มแต่ละ 10 สคริปต์ ฉันจะเรียกใช้แต่ละกลุ่มเหล่านี้แบบขนานได้อย่างไรเช่นหนึ่งกลุ่มในแต่ละแกนที่มีอยู่ จะสคริปต์ของแบบฟอร์ม ./script_A & ./script_B & ./script_C & ... ที่script_Aสอดคล้องกับกลุ่มแรกscript_Bไปยังกลุ่มที่สอง ฯลฯ พอเพียง? สคริปต์ภายในกลุ่มหนึ่งที่รันบนแกนหลักนั้นสามารถเรียกใช้ตามลำดับได้ แต่ฉันต้องการให้กลุ่มทำงานขนานกันทั่วทุกแกน

2
การดำเนินการคำสั่ง piped ในแบบคู่ขนาน
พิจารณาสถานการณ์สมมติต่อไปนี้ ฉันมีสองโปรแกรม A และ B. โปรแกรม A เอาต์พุตไปยัง stdout บรรทัดของสตริงในขณะที่โปรแกรม B ประมวลผลบรรทัดจาก stdin วิธีใช้โปรแกรมทั้งสองนี้เป็นของหลักสูตร: foo @ bar: ~ $ A | B ตอนนี้ฉันสังเกตเห็นว่านี่กินแกนเดียวเท่านั้น ดังนั้นฉันสงสัย: โปรแกรม A และ B แชร์ทรัพยากรการคำนวณเดียวกันหรือไม่ ถ้าเป็นเช่นนั้นจะมีวิธีเรียกใช้ A และ B พร้อมกันไหม อีกสิ่งหนึ่งที่ฉันสังเกตเห็นคือ A ทำงานเร็วกว่า B มากฉันจึงสงสัยว่าจะสามารถรันโปรแกรม B เพิ่มเติมได้หรือไม่และให้พวกเขาประมวลผลบรรทัดที่เอาท์พุทแบบขนาน นั่นคือ A จะเอาต์พุตบรรทัดของมันและจะมีอินสแตนซ์ N ของโปรแกรม B ที่จะอ่านบรรทัดเหล่านี้ (ใครก็ตามที่อ่านก่อน) ประมวลผลและส่งออกใน …

6
มี wget แบบขนานหรือไม่ สิ่งที่ชอบ fping แต่สำหรับการดาวน์โหลดเท่านั้น?
ฉันพบ puf เท่านั้น (ตัวเรียก URL แบบขนาน) แต่ฉันไม่สามารถอ่าน URL จากไฟล์ได้ สิ่งที่ต้องการ puf < urls.txt ไม่ทำงานเช่นกัน ระบบปฏิบัติการที่ติดตั้งบนเซิร์ฟเวอร์คือ Ubuntu

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.