all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Jean Louis <bugs@gnu.support>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: Emacs taking long long time for M-x memory-report
Date: Fri, 2 Apr 2021 18:49:52 +0300	[thread overview]
Message-ID: <YGc9IPQ6+Q511ijl@protected.localdomain> (raw)
In-Reply-To: <834kgog0re.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 9752 bytes --]

* Eli Zaretskii <eliz@gnu.org> [2021-04-02 18:33]:
> > Date: Fri, 2 Apr 2021 18:03:43 +0300
> > From: Jean Louis <bugs@gnu.support>
> > 
> > I am observing that M-x memory-report is notw taking long time, like
> > more than 3 minutes. It did not finish yet while I am writing this.
> > 
> > What should I do to discover where is the problem?
> 
> Profile it.  (And it isn't necessarily "a problem".)

It looks like my read-from-buffer which edits buffer only is taking much.

        5977 100% - ...
           8   0%  - minibuffer-complete
           8   0%   - completion-in-region
           8   0%    - completion--in-region
           8   0%     - #<compiled -0xf7ef4c89da2962>
           8   0%      - apply
           8   0%       - #<compiled -0x15cae1e0b6760cb1>
           8   0%        - completion--in-region-1
           8   0%         - completion--do-completion
           3   0%          - minibuffer-completion-help
           1   0%           - temp-buffer-window-show
           1   0%            - display-buffer
           1   0%             - display-buffer-at-bottom
           1   0%              - window--display-buffer
           1   0%               - #<compiled 0x1613512c910495ef>
           1   0%                - display-completion-list
           1   0%                 - completion--insert-strings
           1   0%                  - mapcar
           1   0%                     #<compiled 0x67be3d777a73573>
           2   0%           - completion-all-completions
           2   0%            - completion--nth-completion
           2   0%             - completion--some
           2   0%              - #<compiled -0x48fb47e53b977bb>
           2   0%               - completion-basic-all-completions
           2   0%                - completion-pcm--all-completions
           2   0%                 - all-completions
           2   0%                  - #<compiled 0xbff542c1afa4328>
           2   0%                     complete-with-action
           5   0%          - completion-try-completion
           5   0%           - completion--nth-completion
           5   0%            - completion--some
           5   0%             - #<compiled 0x1658763d38c00b72>
           5   0%              - completion-basic-try-completion
           5   0%               - try-completion
           5   0%                - #<compiled 0xbff542c1afa4328>
           5   0%                   complete-with-action
         341   5%    Automatic GC
        5628  94%  - let
        5628  94%   - cond
        5628  94%    - if
        5628  94%     - read-from-buffer
        5628  94%      - let
        5628  94%       - save-excursion
        5628  94%        - unwind-protect
        5628  94%         - recursive-edit
        5628  94%          - command-execute
        5628  94%           - call-interactively
        5628  94%            - funcall-interactively
           8   0%             - rcd-db-tabulated-edit-value
           8   0%              - let*
           8   0%               - rcd/edit-entry
           8   0%                - let*
           8   0%                 - let
           8   0%                  - cond
           8   0%                   - if
           8   0%                    - read-from-buffer
           8   0%                     - let
           8   0%                      - save-excursion
           8   0%                       - unwind-protect
           7   0%                        - recursive-edit
           5   0%                         - command-execute
           5   0%                          - call-interactively
           5   0%                           - byte-code
           5   0%                            - read-extended-command
           5   0%                             - completing-read
           5   0%                              - completing-read-default
           5   0%                               - read-from-minibuffer
           1   0%                                - timer-event-handler
           1   0%                                 - apply
           1   0%                                    #<compiled 0x12c5fafe26cb8ce2>
        5620  94%             - execute-extended-command
        5620  94%              - command-execute
        5620  94%               - call-interactively
        5620  94%                - funcall-interactively
           1   0%                   profiler-report
        5619  94%                 - memory-report
          51   0%                  - memory-report--symbol-plist
          51   0%                   - mapatoms
          50   0%                    - #<compiled 0xd6e9ad67883edf2>
          49   0%                     - memory-report--object-size
          48   0%                      - memory-report--object-size-1
          47   0%                       - apply
          44   0%                        - #<compiled 0x1006c82e58669aad>
          34   0%                         - memory-report--object-size
          28   0%                          - memory-report--object-size-1
          27   0%                           - apply
          25   0%                            - #<compiled 0x1006c82e58669aad>
          24   0%                             - memory-report--object-size
          19   0%                              - memory-report--object-size-1
          19   0%                               - apply
           8   0%                                - #<compiled 0x14bd6ffb7d7fe0da>
           8   0%                                 - memory-report--interval-size
           1   0%                                    seq-reduce
           7   0%                                  - mapcar
           7   0%                                   - #<compiled 0x17ad8a63409fb2dd>
           7   0%                                    - memory-report--object-size
           5   0%                                     - memory-report--object-size-1
           5   0%                                      - apply
           5   0%                                       - #<compiled 0x1006c82e58669aad>
           1   0%                                          memory-report--size
           2   0%                                        - memory-report--object-size
           2   0%                                         - memory-report--object-size-1
           2   0%                                          - apply
           1   0%                                           - #<compiled 0x1006c82e58669aad>
           1   0%                                            - memory-report--object-size
           1   0%                                             - memory-report--object-size-1
           1   0%                                              - apply
           1   0%                                                 #<compiled 0x1006c82e58669aad>
           8   0%                                - #<compiled 0x1006c82e58669aad>
           8   0%                                 - memory-report--object-size
           6   0%                                  - memory-report--object-size-1
           6   0%                                   - apply
           6   0%                                    - #<compiled 0x1006c82e58669aad>
           4   0%                                     - memory-report--object-size
           3   0%                                      - memory-report--object-size-1
           2   0%                                         apply
        5568  93%                  - memory-report--buffers
        5568  93%                   - mapcar
        5568  93%                    - #<compiled -0x1d959f9c42d4373d>
        5568  93%                     - memory-report--buffer
        5568  93%                      - memory-report--buffer-data
           4   0%                       - mapcar
           4   0%                        - #<compiled -0x78195bc2e0b667>
           4   0%                         - memory-report--object-size
           4   0%                          - memory-report--object-size-1
           4   0%                           - apply
           1   0%                            - #<compiled 0x14bd6ffb7d7fe0da>
           1   0%                             - memory-report--interval-size
           1   0%                              - mapcar
           1   0%                               - #<compiled 0x17ad8ac5feddb2dd>
           1   0%                                  memory-report--object-size
           1   0%                            - #<compiled 0x1006c82e58669aad>
           1   0%                             - memory-report--object-size
           1   0%                              - memory-report--object-size-1
           1   0%                                 apply
           1   0%                              #<compiled -0x1384462f5396b145>
          16   0%                       - memory-report--object-size
          16   0%                        - memory-report--object-size-1
          16   0%                         - apply
          15   0%                          - #<compiled 0x1006c82e58669aad>
          15   0%                           - memory-report--object-size
          13   0%                            - memory-report--object-size-1
          13   0%                             - apply
          12   0%                              - #<compiled 0x1006c82e58669aad>
           1   0%                                 memory-report--size
          10   0%                               - memory-report--object-size
           6   0%                                - memory-report--object-size-1
           6   0%                                 - apply
           5   0%                                    #<compiled 0x1006c82e58669aad>



[-- Attachment #2: profile.txt --]
[-- Type: text/plain, Size: 15248 bytes --]


[profiler-profile "28.1" cpu #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ([read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute recursive-edit unwind-protect save-excursion let read-from-buffer if cond let let*] 4 ["#<compiled 0x12c5fafe26cb8ce2>" apply timer-event-handler read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute recursive-edit unwind-protect save-excursion let read-from-buffer if] 1 ["#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute recursive-edit] 10 [memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute] 6 ["#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute recursive-edit unwind-protect save-excursion let read-from-buffer] 1 ["#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute execute-extended-command] 1 [memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1] 1 [memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute] 5 [apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively] 3 [apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively] 2 [memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist] 2 [memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute recursive-edit unwind-protect save-excursion] 1 [mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute recursive-edit unwind-protect save-excursion let read-from-buffer if] 1 [memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively] 1 [apply memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute recursive-edit unwind-protect] 3 [memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms memory-report--symbol-plist memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute recursive-edit unwind-protect save-excursion let] 1 [memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply] 1 [seq-reduce memory-report--interval-size "#<compiled 0x14bd6ffb7d7fe0da>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0xd6e9ad67883edf2>" mapatoms] 1 [apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>"] 2 ["#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar] 5 [memory-report--size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x17ad8a63409fb2dd>" mapcar memory-report--interval-size "#<compiled 0x14bd6ffb7d7fe0da>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size] 1 [memory-report--object-size "#<compiled 0x17ad8a63409fb2dd>" mapcar memory-report--interval-size "#<compiled 0x14bd6ffb7d7fe0da>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size] 2 [apply memory-report--object-size-1 memory-report--object-size memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute] 1 [apply memory-report--object-size-1 memory-report--object-size "#<compiled -0x78195bc2e0b667>" mapcar memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively] 1 [memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively] 2 [memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report funcall-interactively] 4 ["#<compiled -0x1384462f5396b145>" apply memory-report--object-size-1 memory-report--object-size "#<compiled -0x78195bc2e0b667>" mapcar memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report funcall-interactively call-interactively command-execute execute-extended-command] 1 ["#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x17ad89cfe02552dd>" mapcar memory-report--interval-size "#<compiled 0x14bd6ffb7d7fe0da>"] 1 [apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x17ad89cfe02552dd>" mapcar memory-report--interval-size "#<compiled 0x14bd6ffb7d7fe0da>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply] 1 ["#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x17ad89cfe02552dd>" mapcar memory-report--interval-size "#<compiled 0x14bd6ffb7d7fe0da>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>"] 2 ["#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size] 2 [memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute recursive-edit unwind-protect save-excursion] 5548 [apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled -0x78195bc2e0b667>" mapcar memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report funcall-interactively] 1 [memory-report--size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report funcall-interactively] 1 [apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report funcall-interactively call-interactively command-execute] 1 [memory-report--object-size "#<compiled 0x17ad8ac5feddb2dd>" mapcar memory-report--interval-size "#<compiled 0x14bd6ffb7d7fe0da>" apply memory-report--object-size-1 memory-report--object-size "#<compiled -0x78195bc2e0b667>" mapcar memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report] 1 [apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers] 1 ["#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size "#<compiled 0x1006c82e58669aad>" apply memory-report--object-size-1 memory-report--object-size memory-report--buffer-data memory-report--buffer "#<compiled -0x1d959f9c42d4373d>" mapcar memory-report--buffers memory-report funcall-interactively call-interactively] 1 [recursive-edit unwind-protect save-excursion let read-from-buffer if cond let let* rcd/edit-entry let* rcd-db-tabulated-edit-value funcall-interactively call-interactively command-execute recursive-edit] 2 [unwind-protect save-excursion let read-from-buffer if cond let let* rcd/edit-entry let* rcd-db-tabulated-edit-value funcall-interactively call-interactively command-execute recursive-edit unwind-protect] 1 [complete-with-action "#<compiled 0xbff542c1afa4328>" try-completion completion-basic-try-completion "#<compiled 0x1658763d38c00b72>" completion--some completion--nth-completion completion-try-completion completion--do-completion completion--in-region-1 "#<compiled -0x15cae1e0b6760cb1>" apply "#<compiled -0xf7ef4c89da2962>" completion--in-region completion-in-region minibuffer-complete] 5 [complete-with-action "#<compiled 0xbff542c1afa4328>" all-completions completion-pcm--all-completions completion-basic-all-completions "#<compiled -0x48fb47e53b977bb>" completion--some completion--nth-completion completion-all-completions minibuffer-completion-help completion--do-completion completion--in-region-1 "#<compiled -0x15cae1e0b6760cb1>" apply "#<compiled -0xf7ef4c89da2962>" completion--in-region] 2 ["#<compiled 0x67be3d777a73573>" mapcar completion--insert-strings display-completion-list "#<compiled 0x1613512c910495ef>" window--display-buffer display-buffer-at-bottom display-buffer temp-buffer-window-show minibuffer-completion-help completion--do-completion completion--in-region-1 "#<compiled -0x15cae1e0b6760cb1>" apply "#<compiled -0xf7ef4c89da2962>" completion--in-region] 1 [profiler-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute recursive-edit unwind-protect save-excursion let read-from-buffer if cond let] 1 [Automatic\ GC] 341)) (24679 15296 446913 732000) nil]

  parent reply	other threads:[~2021-04-02 15:49 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-02 15:03 Emacs taking long long time for M-x memory-report Jean Louis
2021-04-02 15:10 ` Jean Louis
2021-04-02 15:32 ` Eli Zaretskii
2021-04-02 15:43   ` Jean Louis
2021-04-02 15:49   ` Jean Louis [this message]
2021-04-02 18:53     ` Eli Zaretskii
2021-04-02 21:38       ` Jean Louis
2021-04-02 16:05   ` Jean Louis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YGc9IPQ6+Q511ijl@protected.localdomain \
    --to=bugs@gnu.support \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.