2014-11-18T00:06:59Z zRecursive joined #ccl 2014-11-18T00:38:32Z clop quit (Quit: Leaving) 2014-11-18T01:33:50Z pjb quit (Ping timeout: 256 seconds) 2014-11-18T01:52:20Z pjb joined #ccl 2014-11-18T03:59:27Z zRecursive quit (Remote host closed the connection) 2014-11-18T03:59:45Z zRecursive joined #ccl 2014-11-18T04:03:09Z rme quit (Quit: rme) 2014-11-18T04:03:09Z rme quit (Quit: rme) 2014-11-18T05:41:11Z rme joined #ccl 2014-11-18T07:16:44Z zRecursive quit (Remote host closed the connection) 2014-11-18T07:36:26Z adlai joined #ccl 2014-11-18T08:36:29Z rme quit (Quit: rme) 2014-11-18T08:46:18Z adlai quit (Remote host closed the connection) 2014-11-18T09:28:52Z gbyers quit (Ping timeout: 244 seconds) 2014-11-18T09:54:25Z gbyers joined #ccl 2014-11-18T10:06:22Z LoicLisp joined #ccl 2014-11-18T10:26:10Z adlai joined #ccl 2014-11-18T11:14:38Z Blkt_ is now known as Blkt 2014-11-18T11:33:25Z gbyers quit (Ping timeout: 265 seconds) 2014-11-18T14:15:33Z clop joined #ccl 2014-11-18T15:17:37Z adlai quit (Ping timeout: 250 seconds) 2014-11-18T16:17:42Z rme joined #ccl 2014-11-18T16:42:47Z adlai joined #ccl 2014-11-18T16:46:44Z pjb quit (Ping timeout: 256 seconds) 2014-11-18T16:55:26Z pjb joined #ccl 2014-11-18T17:48:33Z gbyers joined #ccl 2014-11-18T18:32:06Z bhyde` joined #ccl 2014-11-18T19:36:50Z gbyers2 joined #ccl 2014-11-18T19:40:46Z gbyers quit (Ping timeout: 264 seconds) 2014-11-18T19:48:37Z pjb quit (Ping timeout: 245 seconds) 2014-11-18T19:55:30Z gbyers2 left #ccl 2014-11-18T19:56:01Z gbyers joined #ccl 2014-11-18T19:56:16Z gbyers quit (Client Quit) 2014-11-18T19:56:46Z gbyers joined #ccl 2014-11-18T20:44:07Z pjb joined #ccl 2014-11-18T20:46:52Z mdc_mobile quit (Ping timeout: 183 seconds) 2014-11-18T20:59:55Z mdc_mobile quit (Ping timeout: 184 seconds) 2014-11-18T21:01:41Z mdc_mobile quit (Ping timeout: 250 seconds) 2014-11-18T21:05:23Z mdc_mobile joined #ccl 2014-11-18T21:40:17Z clop: we have some save-image executables that are very large (like over a gigabyte); are there any tools I might try using to figure out what's using all that space? 2014-11-18T21:40:55Z clop: for instance I bet an awful lot of it is functions--it might be nice to be able to get a report on which functions take up the most space, etc. 2014-11-18T21:41:10Z rme: I'd probably start with ccl:heap-utilization. 2014-11-18T21:42:10Z clop: ah very nice 2014-11-18T21:42:33Z clop: 48% conses, 26% bignums (wtf?), 12.8% strings, and 5% functions 2014-11-18T21:42:50Z clop: so maybe we're doing something boneheaded with bignums somewhere 2014-11-18T21:45:37Z billstclair quit (Quit: Linkinus - http://linkinus.com) 2014-11-18T21:48:21Z rme: clop: There's also a function called map-heap-objects that might be useful. I don't think it's documented, but it is an exported function. Look at the top of ccl:library;links.lisp to see it and a few functions that use it. 2014-11-18T21:48:52Z rme: You might be able to combine that with ccl:object-direct-size to get a more specific idea of who the space hogs are. 2014-11-18T21:49:34Z clop: ok cool, thanks! 2014-11-18T21:49:58Z clop: i'm pretty surprised we're only at 5% functions 2014-11-18T21:50:01Z clop: we make so many of them 2014-11-18T21:50:10Z clop: but i can't imagine any reason for all those bignums, so that's definitely worth looking into 2014-11-18T21:51:09Z rme: Maybe they're being used like long bit vectors? 2014-11-18T21:52:15Z rme: I only say that because I remember working on a performance bug related to that. 2014-11-18T21:59:26Z billstclair joined #ccl 2014-11-18T22:06:03Z LoicLisp quit (Remote host closed the connection) 2014-11-18T22:10:38Z gz: clop: In ccl:library;dominance.lisp there is a function idom-heap-utilization which can analyze a core dump and figure out which top-level objects are actually responsible for the heap usage. Unfortunately it only ever worked on linux64, plus it likely has bit rotted since it was added. I expect both of those issues can be addressed with just a bit of 2014-11-18T22:10:38Z gz: effort. It’s documented in http://trac.clozure.com/ccl/wiki/MemoryUtils 2014-11-18T22:16:18Z clop: ok very cool 2014-11-18T22:17:40Z clop: so if i use, e.g., (object-direct-size #'foo), that seems to correspond to the size of its disassembly, so I think that gives me an easy way to analyze all functions 2014-11-18T22:18:07Z clop: is there a ccl function to get a list of all currently defined functions? (sorry for asking for ridiculous things) 2014-11-18T22:20:12Z billstclair quit (Quit: Linkinus - http://linkinus.com) 2014-11-18T22:20:16Z gz: You can get to all the function objects in the heap with map-heap-objects. 2014-11-18T22:20:16Z rme: (defparameter *fns* nil) (map-heap-objects #'(lambda (thing) (when (functionp thing) 2014-11-18T22:20:17Z rme: (push thing *fns*)))) 2014-11-18T22:20:27Z rme: or something like that 2014-11-18T22:25:36Z billstclair joined #ccl 2014-11-18T22:25:37Z billstclair quit (Changing host) 2014-11-18T22:25:37Z billstclair joined #ccl 2014-11-18T22:28:19Z clop: hah nice 2014-11-18T23:12:07Z ChanServ quit (shutting down) 2014-11-18T23:15:24Z ChanServ joined #ccl 2014-11-18T23:15:24Z wilhelm.freenode.net has set mode +o ChanServ