summaryrefslogtreecommitdiff
path: root/misc/lldb_cruby.py
AgeCommit message (Collapse)Author
2022-04-04Make heap page sizes 64KiB by defaultPeter Zhu
Commit dde164e968e382d50b07ad4559468885cbff33ef decoupled incremental marking from page sizes. This commit changes Ruby heap page sizes to 64KiB. Doing so will have several benefits: 1. We can use compaction on systems with 64KiB system page sizes (e.g. PowerPC). 2. Larger page sizes will allow Variable Width Allocation to increase slot sizes and embed larger objects. 3. Since commit 002fa2859962f22de8afdbeece04966ea57b7da9, macOS has 64 KiB pages. Making page sizes 64 KiB will bring these systems to parity. I have attached some bechmark results below. Discourse: On Discourse, we saw much better p99 performance (e.g. for "categories" it went from 214ms on master to 134ms on branch, for "home" it went from 265ms to 251ms). We don’t see much change in p60, p75, and p90 performance. We also see a slight decrease in memory usage by 1.04x. Branch RSS: 354.9MB Master RSS: 368.2MB railsbench: On rails bench, we don’t see a big change in RPS or p99 performance. We don’t see a big difference in memory usage. Branch RPS: 826.27 Master RPS: 824.85 Branch p99: 1.67 Master p99: 1.72 Branch RSS: 88.72MB Master RSS: 88.48MB liquid: We don’t see a significant change in liquid performance. Branch parse & render: 28.653 I/s Master parse & render: 28.563 i/s Notes: Merged: https://github.com/ruby/ruby/pull/5749
2022-01-26[lldb] Handle MacOS 64Kb heap pages in the lldb helpersMatt Valentine-House
Notes: Merged: https://github.com/ruby/ruby/pull/5495
2022-01-17lldb_cruby.py: support RVARGC on T_CLASS [ci skip]Nobuyoshi Nakada
2022-01-06Update lldb_cruby.py for VWA stringsPeter Zhu
Notes: Merged: https://github.com/ruby/ruby/pull/5399
2021-10-28Follow up the RString change [ci skip]Nobuyoshi Nakada
Since 46b66eb9e8e6de2d5750591e532310e8f8599d90, already `ary` has been enclosed in `embed`.
2021-10-25[Feature #18239] Implement VWA for stringsPeter Zhu
This commit adds support for embedded strings with variable capacity and uses Variable Width Allocation to allocate strings. Notes: Merged: https://github.com/ruby/ruby/pull/4933
2021-09-29lldb: Get rid of error at unpreserved encodings [ci skip]Nobuyoshi Nakada
2021-09-28lldb: Show encoding of String [ci skip]Nobuyoshi Nakada
2021-08-25[Feature #18045] Implement size classes for GCPeter Zhu
This commits implements size classes in the GC for the Variable Width Allocation feature. Unless `USE_RVARGC` compile flag is set, only a single size class is created, maintaining current behaviour. See the redmine ticket for more details. Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/4773
2021-08-25[Feature #18045] Remove T_PAYLOADPeter Zhu
This commit removes T_PAYLOAD since the new VWA implementation no longer requires T_PAYLOAD types. Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/4773
2021-08-23Revert "[Feature #18045] Implement size classes for GC"Peter Zhu
This reverts commits 48ff7a9f3e47bffb3e4d067a12ba9b936261caa0 and b2e2cf2dedd104acad8610721db5e4d341f135ef because it is causing crashes in SPARC solaris and i386 debian. Notes: Merged: https://github.com/ruby/ruby/pull/4764
2021-08-23[Feature #18045] Implement size classes for GCPeter Zhu
This commits implements size classes in the GC for the Variable Width Allocation feature. Unless `USE_RVARGC` compile flag is set, only a single size class is created, maintaining current behaviour. See the redmine ticket for more details. Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/4680
2021-08-23[Feature #18045] Remove T_PAYLOADPeter Zhu
This commit removes T_PAYLOAD since the new VWA implementation no longer requires T_PAYLOAD types. Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/4680
2021-06-04lldb_cruby.py: push non-flonum float to history [ci skip]Nobuyoshi Nakada
2021-06-04lldb_cruby.py: fix non-flonum float inspection [ci skip]Nobuyoshi Nakada
2021-05-24add rb_id2str to lldb debugging scriptsAaron Patterson
2021-05-06lldb: convert heap_page_obj_limit from a float to intPeter Zhu
Notes: Merged: https://github.com/ruby/ruby/pull/4467
2021-05-06lldb: teach rp about T_PAYLOADMatt Valentine-House
Notes: Merged: https://github.com/ruby/ruby/pull/4391
2021-04-29lldb: Warn when attempting to dump invalid pagesMatt Valentine-House
Notes: Merged: https://github.com/ruby/ruby/pull/4431
2021-04-27lldb: highlight the slot when using dump_page_rvalueMatt Valentine-House
Notes: Merged: https://github.com/ruby/ruby/pull/4420
2021-04-27lldb: dump_page_rvalue - dump a heap page containing an RVALUEMatt Valentine-House
rather than having to do this in a two step process: 1. heap_page obj 2. dump_page $2 (or whatever lldb variable heap_page set) we can now just dump_page_rvalue obj Notes: Merged: https://github.com/ruby/ruby/pull/4420
2021-04-27lldb: Add Freelist Index to dump_page outputMatt Valentine-House
Notes: Merged: https://github.com/ruby/ruby/pull/4420
2021-03-16LLDB: Introduce dump_page helperMatt Valentine-House
This dumps out object type information for every object on a page in the form: bits [LM R ] T_CLASS [389]: Addr: 0x1007ebcf0 (flags: 0x100000062) Notes: Merged: https://github.com/ruby/ruby/pull/4277
2021-03-16LLDB: Extract a dump_bits function from rpMatt Valentine-House
that dumps the heap page bitmaps for a slot Notes: Merged: https://github.com/ruby/ruby/pull/4277
2020-10-14Mostly recover a Ruby stack trace from a core fileAaron Patterson
Update the lldb script so it can mostly recover a Ruby stack trace from a core file. It's still missing line numbers and dealing with CFUNCs, but you use it like this: ``` (lldb) rbbt ec rb_control_frame_t TYPE 0x7f6fd6555fa0 EVAL ./bootstraptest/runner.rb error!! 0x7f6fd6555f68 METHOD ./bootstraptest/runner.rb main 0x7f6fd6555f30 METHOD ./bootstraptest/runner.rb in_temporary_working_directory 0x7f6fd6555ef8 METHOD /home/aaron/git/ruby/lib/tmpdir.rb mktmpdir 0x7f6fd6555ec0 BLOCK ./bootstraptest/runner.rb block in in_temporary_working_directory 0x7f6fd6555e88 CFUNC 0x7f6fd6555e50 BLOCK ./bootstraptest/runner.rb block (2 levels) in in_temporary_working_directory 0x7f6fd6555e18 BLOCK ./bootstraptest/runner.rb block in main 0x7f6fd6555de0 METHOD ./bootstraptest/runner.rb exec_test 0x7f6fd6555da8 CFUNC 0x7f6fd6555d70 BLOCK ./bootstraptest/runner.rb block in exec_test 0x7f6fd6555d38 CFUNC 0x7f6fd6555d00 TOP /home/aaron/git/ruby/bootstraptest/test_insns.rb error!! 0x7f6fd6555cc8 CFUNC 0x7f6fd6555c90 BLOCK /home/aaron/git/ruby/bootstraptest/test_insns.rb block in <top (required)> 0x7f6fd6555c58 METHOD ./bootstraptest/runner.rb assert_equal 0x7f6fd6555c20 METHOD ./bootstraptest/runner.rb assert_check 0x7f6fd6555be8 METHOD ./bootstraptest/runner.rb show_progress 0x7f6fd6555bb0 METHOD ./bootstraptest/runner.rb with_stderr 0x7f6fd6555b78 BLOCK ./bootstraptest/runner.rb block in show_progress 0x7f6fd6555b40 BLOCK ./bootstraptest/runner.rb block in assert_check 0x7f6fd6555b08 METHOD ./bootstraptest/runner.rb get_result_string 0x7f6fd6555ad0 METHOD ./bootstraptest/runner.rb make_srcfile 0x7f6fd6555a98 CFUNC 0x7f6fd6555a60 BLOCK ./bootstraptest/runner.rb block in make_srcfile ``` Getting the main execution context is difficult (it is stored in a thread local) so for now you must supply an ec and this will make a backtrace
2020-09-28bit table information when printing an objectAaron Patterson
2020-09-02add lldb functions for getting the heap page / heap page bodyAaron Patterson
2020-09-02support T_MATCH in lldbAaron Patterson
2020-08-27add T_ZOMBIE support to lldb scriptsAaron Patterson
2020-06-23lldb_cruby.py: show the sign of Bignum [ci skip]Nobuyoshi Nakada
2020-05-07Add T_IMEMO support to lldbAaron Patterson
I'm trying to find why a reference to an IMEMO object isn't being updated
2020-05-07Add T_MOVED support to lldbAaron Patterson
2020-04-26lldb_cruby.py: fixed empty string dump [ci skip]Nobuyoshi Nakada
2019-11-25lldb_cruby.py: improved dump of SymbolNobuyoshi Nakada
[ci skip]
2019-11-25lldb_cruby.py: fixed dump of embedded RArrayNobuyoshi Nakada
[ci skip]
2019-10-24Refined `rp` output [ci skip]Nobuyoshi Nakada
So that the result structure can be accessed as `$number` variables, not a mere `VALUE`.
2019-10-09lldb_cruby.py: fixed inspecting string [ci skip]Nobuyoshi Nakada
Show the size of String. To see the whole contents even after NUL char: ``` (lldb) rp str (const char [5]) $1 = "x" (lldb) memory read -s1 --format x --count `sizeof($1)` -- &$1 0x1010457a8: 0x78 0x00 0x61 0x61 0x61 ```
2019-10-09lldb_cruby.py: fixed embedded string ptr [ci skip]Nobuyoshi Nakada
Use GetLocation to get the address of embedded array.
2019-10-03Resolve unused local variable reported by LGTMRomain Tartière
LGTM reports that the value assigned to local variable 'shared' is never used: https://lgtm.com/projects/g/ruby/ruby/snapshot/f319a5d064627c6641817ec2ed16b97b4d215148/files/misc/lldb_cruby.py#x6512c0281581a470:1 This problem was introduced in by the refactoring that took place in 7c496b6624f720d539e3c0b40f122a9422a13b99. Notes: Merged: https://github.com/ruby/ruby/pull/2517
2019-09-25lldb_inspect: removed unnecessary newline and `end` optionNobuyoshi Nakada
2019-09-24misc/lldb_cruby.py: update for python3 [ci skip]Nobuyoshi Nakada
lldb module bundled with Xcode is for Python 3 now.
2019-09-24misc/lldb_cruby.py: removed unused module `commands` [ci skip]Nobuyoshi Nakada
2019-08-29Add some NODE information for lldbAaron Patterson
Just adds a conditional in the lldb scripts so we can more easily debug NODE objects.
2019-05-09add FROZEN to lldb debug outputAaron Patterson
2019-04-02Fix typo in lldb scripttenderlove
Also fix tests git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-01add regex support to lldb debug outputtenderlove
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-20lldb_cruby.py: T_COMPLEX support [ci skip]nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-20lldb_cruby.py: T_RATIONAL support [ci skip]nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-04lldb_rp: support Symbol [ci skip]nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-03lldb_rp: support T_CLASS,T_MODULE,T_ICLASS [ci skip]nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64909 b2dd03c8-39d4-4d8f-98ff-823fe69b080e