| Summary: | libfontconfig has large non-constant (unsharable) data arrays | ||
|---|---|---|---|
| Product: | fontconfig | Reporter: | Tilman Sauerbeck <tilman> |
| Component: | library | Assignee: | Keith Packard <keithp> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | medium | CC: | shawn.p.huang |
| Version: | 2.4 | Keywords: | patch |
| Hardware: | Other | ||
| OS: | All | ||
| Whiteboard: | |||
| i915 platform: | i915 features: | ||
| Attachments: |
0001-Put-language-table-in-read-only-memory.patch
0002-Store-glyph-names-in-read-only-memory.patch 0003-Store-FcCodePageRange-in-read-only-memory.patch 0004-Store-FcNoticeFoundries-in-read-only-memory.patch 0005-Store-FcVendorFoundries-in-read-only-memory.patch |
||
Created attachment 10001 [details] [review] 0001-Put-language-table-in-read-only-memory.patch Created attachment 10002 [details] [review] 0002-Store-glyph-names-in-read-only-memory.patch Created attachment 10003 [details] [review] 0003-Store-FcCodePageRange-in-read-only-memory.patch Created attachment 10004 [details] [review] 0004-Store-FcNoticeFoundries-in-read-only-memory.patch Created attachment 10005 [details] [review] 0005-Store-FcVendorFoundries-in-read-only-memory.patch Below is cut from /proc/PID/smaps of gedit process . Although data section of the binary image is huge, the Private_Dirty of the data section is only 4kB and most pages of it are shared. The Linux system will not allocate a new page for data section until a page of data section become dirty (be written), and those strings will not be written forever. So it is not a big problem in Linux. :) (But I don't know other OS how to deal it.:-/ ) 4c8c2000-4c8e9000 r-xp 00000000 08:08 1518987 /usr/lib/libfontconfig.so.1.2.0 Size: 156 kB Rss: 124 kB Shared_Clean: 124 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 124 kB 4c8e9000-4c8f1000 rwxp 00027000 08:08 1518987 /usr/lib/libfontconfig.so.1.2.0 Size: 32 kB Rss: 12 kB Shared_Clean: 8 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 12 kB Thanks; I've pushed all of these changes. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
The charset tables etc in libfontconfig aren't constant because they need to be touched at runtime. This leads to a large data section of the binary. $ size /usr/lib/libfontconfig.so text data bss dec hex filename 138421 31420 644 170485 299f5 /usr/lib/libfontconfig.so ^^^^^ I'll attach a series of patches that trim the data section down to < 3K. My figures say that saves about 16 KB in every process that loads libfontconfig.