I have been told that it should be possible to control the way the GNU การแปล - I have been told that it should be possible to control the way the GNU ไทย วิธีการพูด

I have been told that it should be

I have been told that it should be possible to control the way the GNU linker lays out binaries. Unfortunately until recently I couldn’t figure out the right incantations to convince ld to do my bidding. Turns out what I needed was to be stranded on a beach in Fiji with nothing better to do than to reread the ld info page a few times.

Recipe:

Produce 2 mozilla builds:
A tracing build with -finstrument-functions in CXXFLAGS/CFLAGS
A release build with -ffunction-sections and -fdata-sections CXXFLAGS/CFLAGS to allow the linker to move stuff at function or static data(mostly variables) granularity
Link my profile.cpp into libxul in the tracing build (without -finstrument-functions flag)
Run the tracing build, capturing the spew from profile.cpp into a log file
Feed the log file to my script to produce a linker script. This will produce library.so.script files for all of Mozilla libraries.
Rebuild relevant libraries in the release build with -T library.so.script linker flag
Enjoy faster startup
This results in 200ms faster startup my 7200rpm laptop harddrive which is about a 10% of my startup. I think that’s pretty good for a proof of concept. Unfortunately there isn’t a measurable win on the SSD (not surprising) nor a reduction in memory usage (I expected one due to not having to page in code that isn’t needed for firefox startup).

I suspect the problem is that data sections need to be laid out adjacent to functions that refer to them. I started sketching out a treehydra script to extract that info.

I posted the relevant testcase and scripts. Do hg clone http://people.mozilla.com/~tglek/startup/ld to see the simple testcase and various WIP firefox scripts.

Long-term Expectations

The majority of Firefox startup overhead (prior to rendering of web pages) comes from frustrating areas such inefficient libraries (eg fontconfig, gtk) and the mess caused by crappy layout of binaries and overuse of dynamic libraries. This post describes one small step towards fixing the crappy layout of our binaries.

I would like to end up in a world where our binaries are static and laid out such that they are read sequentially on startup (such that we can use the massive sequential read speeds provided by modern storage media). Laying out code/data properly should result in memory usage reductions which should be especially welcome on Fennec (especially on Windows Mobile).

I am hoping to see 30-50% startup time improvements from this work if everything goes according to plan.

This entry was posted on Friday, February 19th, 2010 at 11:28 am and is filed under startup. You can follow any comments to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
แล้วบอกว่า มันควรจะไปควบคุมตัวเชื่อมโยงข้อมูล GNU lays ออกไบนารี แต่จนกระทั่งเมื่อเร็ว ๆ นี้ ฉันไม่สามารถตัวเลข incantations ขวาพยาม ld ต้องประมูลของฉันจะ ถูกเปิดออกสิ่งที่ฉันต้องเกยบนชายหาดในฟิจิมีอะไรให้ทำมากกว่าการอ่านหน้าข้อมูล ld กี่ครั้งสูตรอาหาร:ผลิตสร้าง mozilla 2:ติดตามการก่อสร้าง ด้วย - finstrument-ฟังก์ชันใน CXXFLAGS/CFLAGSสร้างรุ่น - ffunction ส่วนและส่วน - fdata CXXFLAGS/CFLAGS ให้ตัวเชื่อมโยงข้อมูลการย้ายสิ่งที่ฟังก์ชันหรือส่วนประกอบของข้อมูลคงที่ (ส่วนใหญ่ตัวแปร)เชื่อมโยงของฉัน profile.cpp เป็น libxul ในโครงสร้างการสืบค้นกลับ (ไม่ มีค่าสถานะ - finstrument ฟังก์ชัน)สร้างติดตาม จับพ่นจาก profile.cpp ไปยังแฟ้มบันทึกการทำงานเลี้ยงล็อกไฟล์สคริปต์จะสร้างสคริปต์ตัวเชื่อมโยงข้อมูลของฉัน นี้จะสร้างแฟ้ม library.so.script สำหรับ Mozilla ไลบรารีทั้งหมดสร้างไลบรารีที่เกี่ยวข้องในโครงสร้างย่อยด้วยค่าสถานะตัวเชื่อมโยงข้อมูล library.so.script -Tเพลิดเพลินกับการเริ่มต้นระบบได้เร็วขึ้นซึ่งผลในการเริ่มต้นเร็ว 200ms harddrive แล็ปท็อปของฉัน 7200 rpm ซึ่งคือ 10% ของการเริ่มต้นของฉัน ผมคิดว่า ก็ดีสำหรับหลักฐานของแนวคิด แต่น่าเสียดายไม่ชนะวัดบน SSD (ไม่น่าแปลกใจ) หรือลดการใช้หน่วยความจำ (คาดว่ามีหนึ่งหน้าในรหัสที่ไม่จำเป็นสำหรับการเริ่มต้นของ firefox)สงสัยว่า ปัญหาเป็นส่วนจำเป็นต้องวางติดกับฟังก์ชันที่อ้างถึงข้อมูล เริ่มต้นร่างแผนสคริปต์ treehydra เพื่อดึงข้อมูลที่ลงเกี่ยวข้อง testcase และสคริปต์ ทำ hg http://people.mozilla.com/~tglek/startup/ld โคลน testcase ง่ายและสคริปต์ firefox WIP ต่าง ๆความคาดหวังระยะยาวส่วนใหญ่ของ Firefox เริ่มต้นค่าใช้จ่ายก่อนทำการแสดงผลของเว็บเพจ) มาจากพื้นที่ที่น่าผิดหวังเช่นไลบรารีต่ำ (เช่น fontconfig, gtk) และระเบียบที่เกิดจากโครงร่างเส็งเคร็งของไบนารีและ overuse ของไลบรารีแบบไดนามิก บทความนี้อธิบายถึงหนึ่งเล็กก้าวแก้ไขเค้าโครงเส็งเคร็งของไบนารีของเราอยากจะลงเอยในโลกไบนารีของเราคงที่ และวางออกเช่นที่พวกเขาจะอ่านตามลำดับเริ่มต้น (เช่นที่เราสามารถใช้ตัวใหญ่ตามลำดับอ่านเร็วโดยสื่อจัดเก็บข้อมูลที่ทันสมัย) เค้าข้อมูลรหัสได้อย่างถูกต้องจะทำให้ลดการใช้หน่วยความจำที่ควรต้อนรับโดยเฉพาะอย่างยิ่งในเฟนเนก (โดยเฉพาะอย่างยิ่งบน Windows Mobile)ข้าพเจ้าหวังว่าจะเห็นการปรับปรุงเวลาเริ่มต้น 30-50% งานนี้ถ้าทุกอย่างไปตามแผนรายการนี้ถูกโพสต์ในวันศุกร์ 19 กุมภาพันธ์ 2010 ที่ 11:28 am และเป็นยื่นใต้เริ่มต้น คุณสามารถทำตามข้อคิดเห็นใด ๆ นี้รายการผ่าน RSS 2.0 ฟีด ข้อคิดเห็นและส่ง ping ถูกปิดอยู่ในขณะนี้
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
ผมได้รับการบอกว่ามันควรจะเป็นไปได้ที่จะควบคุมวิธีการที่ลิงเกอร์ GNU ออกวางไบนารี แต่น่าเสียดายที่จนกระทั่งเมื่อเร็ว ๆ ผมไม่สามารถคิดออกมนต์สิทธิ์ในการโน้มน้าว LD ที่จะทำตามคำสั่งของฉัน เปิดออกสิ่งที่ฉันต้องการจะได้รับการติดอยู่บนชายหาดในฟิจิมีอะไรดีกว่าที่จะทำมากกว่าที่จะอ่านหน้าข้อมูล LD ไม่กี่ครั้ง. สูตร: ผลิต 2 Mozilla สร้าง: สืบค้นกลับสร้างด้วยฟังก์ชั่น--finstrument ใน CXXFLAGS / CFLAGS ปล่อยสร้างด้วยส่วน -ffunction และส่วน -fdata CXXFLAGS / CFLAGS ที่จะอนุญาตให้ลิงเกอร์ที่จะย้ายสิ่งที่ฟังก์ชั่นหรือข้อมูลแบบคงที่ (ส่วนใหญ่เป็นตัวแปร) เมล็ดเชื่อมโยงprofile.cpp ของฉันเป็น libxul ในการติดตามการสร้าง (ไม่มีฟังก์ชั่น--finstrument ธง ) เรียกใช้สร้างการติดตามจับคายจาก profile.cpp ลงในแฟ้มบันทึกฟีดล็อกไฟล์สคริปต์ของฉันในการผลิตสคริปต์ลิงเกอร์ นี้จะผลิตไฟล์ library.so.script สำหรับทุกห้องสมุด Mozilla. สร้างห้องสมุดที่เกี่ยวข้องในการเปิดตัวสร้างด้วย -T ธงลิงเกอร์ library.so.script เพลิดเพลินไปกับการเริ่มต้นได้เร็วขึ้นนี้ส่งผลในการเริ่มต้นได้เร็วขึ้น 200ms 7200rpm แล็ปท็อปของฉัน harddrive ซึ่งเป็นเรื่องเกี่ยวกับ 10 % ของการเริ่มต้นของฉัน ผมคิดว่าเป็นสิ่งที่ดีงามสำหรับหลักฐานการแนวคิด แต่น่าเสียดายที่ไม่ได้เป็นผู้ชนะที่วัดได้ใน SSD (ไม่น่าแปลกใจ) หรือลดลงในการใช้งานหน่วยความจำ (ผมคาดว่าหนึ่งเนื่องจากไม่ได้มีไปยังหน้าเว็บในรหัสที่ไม่จำเป็นสำหรับการเริ่มต้นของ Firefox). ฉันสงสัยว่าปัญหาคือข้อมูลที่ ส่วนจะต้องมีการออกมาวางอยู่ติดกับฟังก์ชั่นที่หมายถึงพวกเขา ผมเริ่มออกร่างสคริปต์ treehydra เพื่อดึงข้อมูลที่. ฉันโพสต์ TestCase ที่เกี่ยวข้องและสคริป ทำ hg โคลน http://people.mozilla.com/~tglek/startup/ld เพื่อดู testcase ง่ายและสคริปต์ต่างๆ WIP ของ Firefox. ความคาดหวังในระยะยาวส่วนใหญ่ของการเริ่มต้นค่าใช้จ่ายใน Firefox (ก่อนที่จะแสดงผลของหน้าเว็บ) มาจาก พื้นที่ที่น่าผิดหวังที่ไม่มีประสิทธิภาพเช่นห้องสมุด (เช่น fontconfig, GTK) และระเบียบที่เกิดจากรูปแบบเส็งเคร็งของไบนารีและมากเกินไปของห้องสมุดแบบไดนามิก โพสต์นี้จะอธิบายถึงขั้นตอนเดียวขนาดเล็กที่มีต่อการแก้ไขรูปแบบเส็งเคร็งของไบนารีของเรา. ผมอยากจะจบลงในโลกที่ไบนารีของเราเป็นแบบคงที่และออกมาวางดังกล่าวว่าพวกเขาจะอ่านตามลำดับในการเริ่มต้น (เช่นที่เราสามารถใช้ในการอ่านต่อเนื่องขนาดใหญ่ ความเร็วในการให้บริการโดยการจัดเก็บสื่อที่ทันสมัย) ออกวางรหัส / ข้อมูลที่ถูกต้องควรจะส่งผลในการลดการใช้หน่วยความจำที่ควรโดยเฉพาะอย่างยิ่งในการต้อนรับ Fennec (โดยเฉพาะบน Windows Mobile). ฉันหวังที่จะเห็นการปรับปรุงเวลาเริ่มต้น 30-50% จากการทำงานนี้ถ้าทุกอย่างเป็นไปตามแผน. รายการนี้ ถูกโพสต์เมื่อวันที่ศุกร์ 19 กุมภาพันธ์, 2010 ที่ 11:28 และยื่นใต้เริ่มต้น คุณสามารถปฏิบัติตามความเห็นใด ๆ นี้รายการผ่าน RSS 2.0 ฟีด ความคิดเห็นทั้ง Ping ปิดขณะนี้


























การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
ฉันได้รับการบอกว่ามันควรจะเป็นไปได้ที่จะควบคุมวิธีที่ GNU โปรแกรมเชื่อมโยง lays ออกไบนารี แต่น่าเสียดายที่จนกระทั่งเมื่อเร็ว ๆ นี้ ผมคิดไม่ออกว่าคาถาที่จะโน้มน้าว LD จะทำตามคำขอของฉัน กลายเป็นว่าสิ่งที่ฉันต้องการจะเกยตื้นบนชายหาดในฟิจิ ไม่มีอะไรดีกว่าการทำกว่าการ reread LD ข้อมูลหน้าเว็บหลายครั้ง

สูตร :

:
2 Mozilla สร้างผลิตการติดตามสร้างด้วย - finstrument ฟังก์ชันใน cxxflags / cflags
ปล่อยสร้างด้วย - ส่วน ffunction และ - fdata ส่วน cxxflags / cflags ให้ลิงเกอร์ ย้ายของในงาน หรือข้อมูลคงที่ ( ส่วนใหญ่ตัวแปร ) granularity
การเชื่อมโยงของฉัน profile.cpp เป็น libxul ในการสร้าง ( ไม่มี - finstrument ฟังก์ชันธง )
วิ่งติดตาม สร้าง , จับอาเจียนจาก profile.cpp ลงในแฟ้มบันทึก
ดึงแฟ้มบันทึกของฉันสคริปต์เพื่อสร้างสนามกอล์ฟ สคริปต์ นี้จะสร้างไฟล์ library.so.script ทั้งหมดของ Mozilla ห้องสมุด .
สร้างห้องสมุดที่เกี่ยวข้องในการสร้างด้วย - t library.so.script โปรแกรมเชื่อมโยงธง

สนุกเริ่มต้นเร็วนี้ผลลัพธ์ใน 200ms เริ่มต้นได้เร็วขึ้นของฉันเนื่องจากแล็ปท็อปฮาร์ดดิสก์ซึ่งมีประมาณ 10% ของการเริ่มต้นของฉัน ฉันคิดว่ามันสวยดี สำหรับหลักฐานของแนวคิดแต่น่าเสียดายที่ไม่มีวัดชนะบน SSD ( ไม่น่าแปลกใจ ) หรือ การลดการใช้หน่วยความจำ ( ผมคาดว่า เนื่องจากไม่มีหน้าที่ไม่ได้จำเป็นสำหรับ Firefox เริ่มต้น ) .

สงสัยปัญหาอยู่ที่ส่วนของข้อมูลต้องถูกวางติดกับฟังก์ชันที่เรียกพวกเขา ผมพยายามหา treehydra สคริปต์เพื่อดึงข้อมูลที่ .

โพสต์ testcase ที่เกี่ยวข้องและสคริปต์ ทำโคลน HG http : / / คน Mozilla . com / ~ tglek / เริ่มต้น / LD เห็น testcase ง่ายและสคริปต์ Firefox WIP ต่างๆ

ยาวหวัง

ส่วนใหญ่ของ Firefox ( ก่อนที่จะเริ่มต้นในการแสดงผลของหน้าเว็บ ) มาจากพื้นที่ดังกล่าวไม่มีประสิทธิภาพ เช่น หงุดหงิด fontconfig ห้องสมุด ,เครื่อง ) และระเบียบที่เกิดจากรูปแบบเส็งเคร็งของไบนารีและ overuse ของห้องสมุดแบบไดนามิก บทความนี้อธิบายถึงหนึ่งก้าวเล็กๆสู่การแก้ไขเค้าโครงเส็งเคร็งของไบนารีของเรา

ฉันต้องการท้ายในโลกที่ไบนารีของเราจะคงที่และแสดงเช่นที่พวกเขาอ่านตามลำดับในการเริ่มต้น ( เช่นที่เราสามารถใช้อ่านต่อเนื่องขนาดใหญ่ความเร็วโดยสื่อสมัยใหม่ที่กระเป๋า )วางโค้ดข้อมูลอย่างถูกต้องจะส่งผลให้ลดการใช้หน่วยความจำที่ควรจะต้อนรับโดยเฉพาะอย่างยิ่งบน Fennec ( โดยเฉพาะบน Windows Mobile ) .

ฉันหวังที่จะเห็นการปรับปรุง 30-50% เริ่มต้นเวลาทำงานนี้ หากทุกอย่างไปตามแผน

รายการนี้ถูกโพสต์ในวันศุกร์ที่ 19 กุมภาพันธ์ 2010 ที่ 11:28 คือ และยื่นใต้ การเริ่มต้นคุณสามารถทำตามความคิดเห็นใด ๆนี้รายการผ่าน RSS 2.0 ฟีด ทั้งแสดงความคิดเห็นและการส่ง Ping ปิดขณะนี้ .
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2025 I Love Translation. All reserved.

E-mail: