On 12/07/2017 10:53 PM, Michael Meeks wrote:
        The basic problem is this - LOOL pre-initializes LibreOffice before 
forking to ensure that lots of the memory is shared copy-on-write between it 
and the child processes. That works reasonably well, but unfortunately - when 
we re-use strings from that corpus - we tend to touch the ref-counts, which 
causes lots of page dirtying.

If the issue is mostly with rtl_uString that originated from (implicitly) converting a string literal in the source code into an rtl::OUString instance (rather than rtl::OUString instances that have actually been computed from other values during the pre-initialization phase, and survive past that phase):

I think that with <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0424r2.pdf> "String literals as non-type template parameters" potentially making it into C++20 (and potentially being available in Clang or GCC even before; it already is, in a form almost usable for our needs), we will be able to create such rtl_uString from string literals in the source code during compilation, placing them into read-only data segments.

So, it would be interesting to know whether the issue indeed is mostly with such rtl_uString instances, so that the mechanism I outlined above would be going to sufficiently solve your issue.

[...]
diff --git a/sal/util/sal.map b/sal/util/sal.map
index 579119065121..1dffaf8bc787 100644
--- a/sal/util/sal.map
+++ b/sal/util/sal.map
@@ -740,6 +740,11 @@ PRIVATE_1.4 { # LibreOffice 6.0
          _ZN3sal19backtrace_to_stringEPNS_14BacktraceStateE;
  } PRIVATE_1.3;
+PRIVATE_1.3 { # LibreOffice 6.1

this would need to be PRIVATE_1.5 (we're already at PRIVATE_1.4 for LibreOffice 6.0)

+    global:
+        rtl_alloc_preInit;
+} PRIVATE_1.2;
+
  PRIVATE_textenc.1 { # LibreOffice 3.6
      global:
          _ZN3sal6detail7textenc20convertCharToUnicode*;


_______________________________________________
LibreOffice mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to