Skip to content
Snippets Groups Projects
  1. Nov 09, 2018
  2. Oct 26, 2018
  3. Jul 12, 2018
  4. Jun 12, 2018
    • Eelco Dolstra's avatar
      Move EvalState from the stack to the heap · 0629601d
      Eelco Dolstra authored
      EvalState contains a few counters (e.g. nrValues) that increase
      quickly enough that they end up being interpreted as pointers by the
      garbage collector. Moving it to the heap makes them invisible to the
      garbage collector.
      
      This reduces the max RSS doing 100 evaluations of
      nixos.tests.firefox.x86_64-linux.drvPath from 455 MiB to 292 MiB.
      
      Note: ideally, allocations would be much further up in the 64-bit
      address space to reduce the odds of an integer being misinterpreted as
      a pointer. Maybe we can use some linker magic to move the .bss segment
      to a higher address.
      0629601d
  5. Feb 08, 2018
  6. Oct 24, 2017
  7. Sep 18, 2017
  8. Jul 30, 2017
  9. Jul 04, 2017
  10. Mar 15, 2017
  11. Nov 25, 2016
  12. Sep 21, 2016
  13. Sep 14, 2016
    • Eelco Dolstra's avatar
      Enable HTTP/2 support · 90ad02bf
      Eelco Dolstra authored
      The binary cache store can now use HTTP/2 to do lookups. This is much
      more efficient than HTTP/1.1 due to multiplexing: we can issue many
      requests in parallel over a single TCP connection. Thus it's no longer
      necessary to use a bunch of concurrent TCP connections (25 by
      default).
      
      For example, downloading 802 .narinfo files from
      https://cache.nixos.org/, using a single TCP connection, takes 11.8s
      with HTTP/1.1, but only 0.61s with HTTP/2.
      
      This did require a fairly substantial rewrite of the Downloader class
      to use the curl multi interface, because otherwise curl wouldn't be
      able to do multiplexing for us. As a bonus, we get connection reuse
      even with HTTP/1.1. All downloads are now handled by a single worker
      thread. Clients call Downloader::enqueueDownload() to tell the worker
      thread to start the download, getting a std::future to the result.
      90ad02bf
  14. Jul 26, 2016
  15. Jun 01, 2016
  16. Apr 15, 2016
  17. Mar 02, 2016
  18. Feb 29, 2016
  19. Feb 04, 2016
    • Eelco Dolstra's avatar
      Eliminate the "store" global variable · c10c6144
      Eelco Dolstra authored
      Also, move a few free-standing functions into StoreAPI and Derivation.
      
      Also, introduce a non-nullable smart pointer, ref<T>, which is just a
      wrapper around std::shared_ptr ensuring that the pointer is never
      null. (For reference-counted values, this is better than passing a
      "T&", because the latter doesn't maintain the refcount. Usually, the
      caller will have a shared_ptr keeping the value alive, but that's not
      always the case, e.g., when passing a reference to a std::thread via
      std::bind.)
      c10c6144
  20. Oct 21, 2015
  21. Oct 07, 2015
  22. Oct 01, 2015
Loading