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

7
เหตุใดการใช้เธรดมากกว่าทำให้ช้ากว่าการใช้เธรดที่น้อยกว่า
พยายามที่จะเรียกใช้โปรแกรม X ใช้8 เธรดและมันถูกกว่าในn นาที พยายามที่จะเรียกใช้โปรแกรมเดียวกันโดยใช้50 หัวข้อและมันถูกกว่าในn * 10 นาที เหตุใดสิ่งนี้จึงเกิดขึ้นและฉันจะได้รับจำนวนเธรดที่ดีที่สุดที่ฉันสามารถใช้ได้อย่างไร

7
รับการใช้งานหน่วยความจำทั้งหมดของ chrome
เนื่องจาก Google Chrome / Chromium วางไข่หลายกระบวนการจึงยากที่จะเห็นจำนวนหน่วยความจำทั้งหมดที่กระบวนการเหล่านี้ใช้ทั้งหมด มีวิธีที่ง่ายหรือไม่ในการดูว่ามีหน่วยความจำรวมทั้งหมดที่กระบวนการเชื่อมต่อใช้อยู่หรือไม่

2
ขนาดสแต็กเริ่มต้นสำหรับ pthreads
ดังที่ฉันเข้าใจขนาดสแต็คเริ่มต้นสำหรับ pthread บน Linux คือ 16K ฉันได้รับผลลัพธ์ที่แปลกในการติดตั้ง Ubuntu แบบ 64 บิตของฉัน $ ulimit -s 8192 นอกจากนี้: pthread_attr_init(&attr); pthread_attr_getstacksize(&attr, &stacksize); printf("Thread stack size = %d bytes \n", stacksize); Prints Thread stack size = 8388608 bytes ฉันค่อนข้างแน่ใจว่าขนาดสแต็กไม่ใช่ "8388608" มีอะไรผิดปกติ?
24 c  multithreading 

5
วิธีรันคำสั่งโดยเฉลี่ย 5 ครั้งต่อวินาที
ฉันมีสคริปต์บรรทัดคำสั่งที่ดำเนินการเรียก API และอัปเดตฐานข้อมูลพร้อมผลลัพธ์ ฉันมีขีด จำกัด การเรียก API 5 ครั้งต่อวินาทีกับผู้ให้บริการ API สคริปต์ใช้เวลาดำเนินการมากกว่า 0.2 วินาที หากฉันรันคำสั่งตามลำดับคำสั่งนั้นจะทำงานไม่เร็วพอและฉันจะทำการเรียก API 1 หรือ 2 ครั้งต่อวินาทีเท่านั้น หากฉันรันคำสั่งตามลำดับ แต่พร้อมกันจากหลายเทอร์มินัลฉันอาจเกินขีด จำกัด การโทร 5 ครั้ง / วินาที หากมีวิธีการจัดทำชุดข้อความเพื่อให้สคริปต์บรรทัดคำสั่งของฉันทำงานเกือบ 5 ครั้งต่อวินาที ตัวอย่างเช่นสิ่งที่จะรันด้วย 5 หรือ 10 เธรดและไม่มีเธรดใดที่จะเรียกใช้งานสคริปต์หากเธรดก่อนหน้าได้ดำเนินการน้อยกว่า 200ms ที่ผ่านมา

1
เกิดอะไรขึ้นกับกระบวนการ Linux แบบมัลติเธรดหากได้รับสัญญาณ
หากกระบวนการ Unix (Posix) ได้รับสัญญาณตัวจัดการสัญญาณจะทำงาน จะเกิดอะไรขึ้นกับมันในกระบวนการแบบมัลติเธรด? เธรดใดรับสัญญาณ ในความคิดของฉันสัญญาณ API ควรขยายเพื่อจัดการ (เช่นเธรดของตัวจัดการสัญญาณควรจะสามารถกำหนดได้) แต่การค้นหา infos บนเน็ตฉันพบเปลวไฟนานแค่ปีเดียวในรายชื่อส่งเมลเคอร์เนลของ linux และบน ฟอรั่มที่แตกต่างกัน ตามที่ฉันเข้าใจแล้วแนวคิดของ Linus นั้นแตกต่างจากมาตรฐาน Posix และชั้นแรกที่รองรับเลเยอร์บางส่วนถูกสร้างขึ้น แต่ตอนนี้ Linux ตามรูปแบบ posix สถานะปัจจุบันคืออะไร

3
เหตุใด top และ ps จึงแสดง PID ที่แตกต่างกันสำหรับกระบวนการเดียวกัน
เมื่อฉันเรียกใช้top -Hฉันเห็นว่าหลายmysqlเธรดของฉันทั้งหมดมี PID เดียวกัน อย่างไรก็ตามในps -eLfฉันเห็นแต่ละคนมี PID ที่แตกต่างกัน: ps -eLf UID PID PPID LWP C NLWP STIME TTY TIME CMD mysql 1424 1 1424 0 17 18:41 ? 00:00:00 /usr/sbin/mysqld mysql 1424 1 1481 0 17 18:41 ? 00:00:00 /usr/sbin/mysqld mysql 1424 1 1482 0 17 18:41 ? 00:00:00 /usr/sbin/mysqld …

2
ทำไมบน Linux ที่ทันสมัยขนาดสแต็กเริ่มต้นมีขนาดใหญ่มาก - 8MB (แม้แต่ 10 ในการกระจาย)
ตัวอย่างเช่นบน OSX มันน้อยกว่า 512k มีขนาดที่แนะนำโดยคำนึงว่าแอปไม่ได้ใช้การสอบถามซ้ำและไม่ได้จัดสรรตัวแปรสแต็กจำนวนมากหรือไม่ ฉันรู้ว่าคำถามนั้นกว้างเกินไปและมันก็ขึ้นอยู่กับการใช้งาน แต่ก็ยังอยากถามเพราะฉันสงสัยว่ามีเหตุผลซ่อนอยู่ภายใน / ระบบ /หลังจำนวนมากนี้ ฉันสงสัยว่าในขณะที่ฉันตั้งใจจะเปลี่ยนขนาดสแต็คเป็น 512 KiB ในแอปของฉัน - นี่ยังคงฟังดูเหมือนเป็นจำนวนมากสำหรับเรื่องนี้ แต่มันมีขนาดเล็กกว่า 8MiB - และจะทำให้หน่วยความจำเสมือนของกระบวนการลดลงอย่างมีนัยสำคัญ มีเธรดจำนวนมาก (I / O) ฉันก็รู้ว่ามันไม่เจ็บจริง ๆ อธิบายได้ดีที่นี่ : ขนาดสแต็กเริ่มต้นสำหรับ pthreads

1
Multi-Threading / Forking ในสคริปต์ทุบตี
ฉันได้เขียนสคริปต์ทุบตีซึ่งอยู่ในรูปแบบต่อไปนี้: #!/bin/bash start=$(date +%s) inFile="input.txt" outFile="output.csv" rm -f $inFile $outFile while read line do -- Block of Commands done < "$inFile" end=$(date +%s) runtime=$((end-start)) echo "Program has finished execution in $runtime seconds." whileห่วงจะอ่านจากดำเนินกิจกรรมบางอย่างในสายและการถ่ายโอนผลใน$inFile$outFile เนื่องจาก$inFileมีความยาว 3,500+ บรรทัดสคริปต์จะใช้เวลา 6-7 ชั่วโมงในการดำเนินการอย่างสมบูรณ์ เพื่อลดเวลานี้ฉันวางแผนที่จะใช้หลายเธรดหรือฟอร์กในสคริปต์นี้ ถ้าฉันสร้างกระบวนการลูก 8 กระบวนการจะประมวลผล 8 บรรทัด$inFileพร้อมกัน สิ่งนี้สามารถทำได้?

1
uClibc รองรับการใช้ pthreads หรือไม่
ผมเพิ่งเข้าร่วมหลักสูตรลินุกซ์ฝังตัวที่ระบุว่า uClibc ไม่สนับสนุนการใช้และที่จะสนับสนุนเฉพาะpthreads linuxthreadsนอกจากนี้อาจารย์ผู้สอนยังบอกว่าlinuxthreadsไม่มีประโยชน์อะไร อย่างไรก็ตามเมื่ออ่านบทความออนไลน์จำนวนมากความหมายก็คือพวกเขาได้รับการสนับสนุนในความเป็นจริง นอกจากนี้เมื่อสร้างระบบไฟล์รูทและเคอร์เนลอิมเมจสำหรับอุปกรณ์ฝังตัวเป้าหมายโดยใช้ buildroot ฉันจะเห็นว่าฉันมีlibpthread-0.9.33.2.soและlibpthread.so.0ไฟล์ใน/libไดเรกทอรีของระบบไฟล์รูทเป้าหมายของฉัน ฉันสับสนจริง ๆ เกี่ยวกับลักษณะของข้อมูลที่ขัดแย้งที่ฉันได้รับและจะขอบคุณหากใครสามารถชี้แจงสถานการณ์ให้ฉันได้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.