Mercurial > octave
annotate scripts/miscellaneous/memory.m @ 32082:66ecc0d4d6ce stable
memory: Fix execution on Cygwin.
* scripts/miscellaneous/memory.m: Check if field "Cached" exists before using
it.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Sun, 07 May 2023 18:13:19 +0200 |
parents | 597f3ee61a48 |
children | 2e484f9f1f18 |
rev | line source |
---|---|
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
1 ######################################################################## |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
2 ## |
31706
597f3ee61a48
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
31594
diff
changeset
|
3 ## Copyright (C) 2020-2023 The Octave Project Developers |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
4 ## |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
7 ## |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
8 ## This file is part of Octave. |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
9 ## |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
11 ## under the terms of the GNU General Public License as published by |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
13 ## (at your option) any later version. |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
14 ## |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
15 ## Octave is distributed in the hope that it will be useful, but |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
18 ## GNU General Public License for more details. |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
19 ## |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
20 ## You should have received a copy of the GNU General Public License |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
21 ## along with Octave; see the file COPYING. If not, see |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
23 ## |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
24 ######################################################################## |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
25 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
26 ## -*- texinfo -*- |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
27 ## @deftypefn {} {} memory () |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
28 ## @deftypefnx {} {[@var{userdata}, @var{systemdata}] =} memory () |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
29 ## Display or return information about the memory usage of Octave. |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
30 ## |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
31 ## If the function is called without output arguments, a table with an overview |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
32 ## of the current memory consumption is displayed. |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
33 ## |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
34 ## The output argument @var{userdata} is a structure with the following fields |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
35 ## containing data for the Octave process: |
28753 | 36 ## |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
37 ## @table @code |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
38 ## @item MaxPossibleArrayBytes |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
39 ## Maximum size for an array to be allocated. Be aware that this includes |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
40 ## @emph{all} physical memory and swap space. Allocating that amount of memory |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
41 ## might result in system instability, data corruption, and/or file system |
28754 | 42 ## corruption. Note that depending on the platform (32-bit systems), the |
28753 | 43 ## largest contiguous memory block might further limit the maximum possible |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
44 ## allocatable array. This check is not currently implemented. |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
45 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
46 ## @item MemAvailableAllArrays |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
47 ## The total size of available memory in bytes. |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
48 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
49 ## @item ram_available_all_arrays |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
50 ## The maximum size for an array that can be allocated in physical memory |
28754 | 51 ## (excluding swap space). Note that depending on the platform (32-bit |
28753 | 52 ## systems), the largest contiguous memory block might further limit the |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
53 ## maximum possible allocatable array. This check is not currently |
28753 | 54 ## implemented. |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
55 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
56 ## @item MemUsedMATLAB |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
57 ## @itemx mem_used_octave |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
58 ## The memory (including swap space) currently used by Octave in bytes. |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
59 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
60 ## @item ram_used_octave |
28753 | 61 ## The physical memory (excluding swap space) currently used by Octave in |
62 ## bytes. | |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
63 ## |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
64 ## @end table |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
65 ## |
28753 | 66 ## The output argument @var{systemdata} is a nested structure with the |
67 ## following fields containing information about the system's memory: | |
68 ## | |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
69 ## @table @code |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
70 ## @item PhysicalMemory.Available |
28754 | 71 ## The currently available physical memory in bytes. |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
72 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
73 ## @item PhysicalMemory.Total |
28754 | 74 ## The total physical memory in bytes. |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
75 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
76 ## @item SystemMemory.Available |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
77 ## The currently available memory (including swap space) in bytes. |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
78 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
79 ## @item SystemMemory.Total |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
80 ## The total memory (including swap space) in bytes. |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
81 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
82 ## @item VirtualAddressSpace.Available |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
83 ## The currently available virtual address space in bytes. |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
84 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
85 ## @item VirtualAddressSpace.Total |
28373
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
86 ## The total virtual address space in bytes. |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
87 ## |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
88 ## @end table |
29c655998ac3
memory.m: Add documentation (patch #9924).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28372
diff
changeset
|
89 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
90 ## Example #1 : print formatted table of memory usage |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
91 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
92 ## @example |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
93 ## @group |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
94 ## memory () |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
95 ## @result{} |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
96 ## System RAM: 3934008 KiB, swap: 4087804 KiB |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
97 ## Octave RAM: 170596 KiB, virt: 1347944 KiB |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
98 ## Free RAM: 1954940 KiB, swap: 4087804 KiB |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
99 ## Available RAM: 2451948 KiB, total: 6042744 KiB |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
100 ## @end group |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
101 ## @end example |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
102 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
103 ## Example #2 : return structs with memory usage information |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
104 ## |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
105 ## @example |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
106 ## [userdata, systemdata] = memory () |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
107 ## @result{} |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
108 ## userdata = |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
109 ## |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
110 ## scalar structure containing the fields: |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
111 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
112 ## MaxPossibleArrayBytes = 6.1622e+09 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
113 ## MemAvailableAllArrays = 6.1622e+09 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
114 ## ram_available_all_arrays = 2.4883e+09 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
115 ## MemUsedMATLAB = 1.3825e+09 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
116 ## mem_used_octave = 1.3825e+09 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
117 ## ram_used_octave = 1.7824e+08 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
118 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
119 ## systemdata = |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
120 ## |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
121 ## scalar structure containing the fields: |
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
122 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
123 ## PhysicalMemory = |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
124 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
125 ## scalar structure containing the fields: |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
126 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
127 ## Available = 2.4954e+09 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
128 ## Total = 4.0284e+09 |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
129 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
130 ## SystemMemory = |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
131 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
132 ## scalar structure containing the fields: |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
133 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
134 ## Available = 6.6813e+09 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
135 ## Total = 8.2143e+09 |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
136 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
137 ## VirtualAddressSpace = |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
138 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
139 ## scalar structure containing the fields: |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
140 ## |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
141 ## Available = 2.8147e+14 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
142 ## Total = 2.8147e+14 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
143 ## @end example |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
144 ## |
31002
c05aa021e971
memory.m: Redo documentation to be formatted correctly in Info output.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
145 ## Programming Note: This function is implemented for Linux and Windows only. |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
146 ## |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
147 ## @seealso{computer, getpid, getrusage, nproc, uname} |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
148 ## @end deftypefn |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
149 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
150 function [userdata, systemdata] = memory () |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
151 |
29583
59c5131d46af
memory.m: Skip function and tests on macOS.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29359
diff
changeset
|
152 if ((! isunix () || ismac ()) && ! ispc ()) |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
153 if (nargout > 0) |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
154 error ("memory: function not yet implemented for this architecture"); |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
155 else |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
156 warning ("memory: function not yet implemented for this architecture"); |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
157 endif |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
158 return; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
159 endif |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
160 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
161 kiB = 1024; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
162 [architecture, bits] = computer (); |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
163 |
29583
59c5131d46af
memory.m: Skip function and tests on macOS.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29359
diff
changeset
|
164 if (isunix () && ! ismac ()) |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
165 ## Read values from pseudofiles |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
166 [status, meminfo] = lmemory (); |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
167 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
168 ## FIXME: Query the actual size of the user address space, |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
169 ## e.g., with getrlimit (RLIMIT_AS, rlp) |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
170 if (log2 (bits) > 32) |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
171 ## 64-bit platform |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
172 address_space = 2^48; # 256 TiB |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
173 else |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
174 ## 32-bit platform |
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
175 address_space = 3 * 2^30; # 3 GiB |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
176 endif |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
177 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
178 total_ram = meminfo.MemTotal * kiB; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
179 total_swap = meminfo.SwapTotal * kiB; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
180 free_ram = meminfo.MemFree * kiB; |
28921
967cfcde2e35
maint: Use parentheses around conditional expressions.
Rik <rik@octave.org>
parents:
28758
diff
changeset
|
181 if (isfield (meminfo, "MemAvailable")) |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
182 available_ram = meminfo.MemAvailable * kiB; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
183 else |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
184 ## On kernels from before 2014 MemAvailable is not present. |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
185 ## This is a rough estimate that can be used instead. |
32082
66ecc0d4d6ce
memory: Fix execution on Cygwin.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31706
diff
changeset
|
186 available_ram = meminfo.MemFree * kiB; |
66ecc0d4d6ce
memory: Fix execution on Cygwin.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31706
diff
changeset
|
187 if (isfield (meminfo, "Cached")) |
66ecc0d4d6ce
memory: Fix execution on Cygwin.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31706
diff
changeset
|
188 ## Some platforms don't support "Cached" (e.g., Cygwin). |
66ecc0d4d6ce
memory: Fix execution on Cygwin.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31706
diff
changeset
|
189 ## That makes the result even more unreliable. But it might be better |
66ecc0d4d6ce
memory: Fix execution on Cygwin.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31706
diff
changeset
|
190 ## than nothing. |
66ecc0d4d6ce
memory: Fix execution on Cygwin.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31706
diff
changeset
|
191 available_ram += meminfo.Cached * kiB; |
66ecc0d4d6ce
memory: Fix execution on Cygwin.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31706
diff
changeset
|
192 endif |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
193 endif |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
194 free_swap = meminfo.SwapFree * kiB; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
195 used_ram = status.VmRSS * kiB; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
196 used_virtual = status.VmSize * kiB; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
197 avail_virtual = address_space - used_virtual; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
198 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
199 elseif (ispc ()) |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
200 [proc, sys] = __wmemory__ (); |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
201 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
202 total_ram = sys.TotalPhys; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
203 total_swap = sys.TotalPageFile; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
204 available_ram = sys.AvailPhys; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
205 free_swap = sys.AvailPageFile; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
206 used_ram = proc.WorkingSetSize; |
28454
f6a8f103786e
memory.m: Fix reported virtual memory usage on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents:
28373
diff
changeset
|
207 used_virtual = proc.WorkingSetSize + proc.PagefileUsage; |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
208 avail_virtual = sys.AvailVirtual; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
209 address_space = sys.TotalVirtual; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
210 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
211 endif |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
212 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
213 available = min (available_ram + free_swap, avail_virtual); |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
214 ram_available = min (available_ram, avail_virtual); |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
215 |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
216 ## FIXME: On 32-bit systems, the largest possible array is limited by the |
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
217 ## largest contiguous block in memory. |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
218 user.MaxPossibleArrayBytes = available; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
219 user.MemAvailableAllArrays = available; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
220 user.ram_available_all_arrays = ram_available; |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
221 user.MemUsedMATLAB = used_virtual; # For compatibility |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
222 user.mem_used_octave = used_virtual; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
223 user.ram_used_octave = used_ram; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
224 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
225 syst.PhysicalMemory.Available = available_ram; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
226 syst.PhysicalMemory.Total = total_ram; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
227 syst.SystemMemory.Available = available_ram + free_swap; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
228 syst.SystemMemory.Total = total_ram + total_swap; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
229 syst.VirtualAddressSpace.Available = avail_virtual; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
230 syst.VirtualAddressSpace.Total = address_space; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
231 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
232 if (nargout) |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
233 userdata = user; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
234 systemdata = syst; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
235 else |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
236 unitsize = kiB; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
237 unitname = 'kiB'; |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
238 disp (sprintf ("Octave is running on %s", architecture)) |
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
239 disp (sprintf ("System RAM: %9.0f %s, swap: %9.0f %s", |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
240 round (syst.PhysicalMemory.Total / unitsize), unitname, |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
241 round (total_swap / unitsize), unitname )) |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
242 disp (sprintf ("Octave RAM: %9.0f %s, virt: %9.0f %s", |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
243 round (user.ram_used_octave / unitsize), unitname, |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
244 round (user.mem_used_octave / unitsize), unitname)) |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
245 if (isunix ()) |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
246 ## The concept of free vs. available RAM doesn't seem to exist on Windows |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
247 disp (sprintf ("Free RAM: %9.0f %s, swap: %9.0f %s", |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
248 round (free_ram / unitsize), unitname, |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
249 round (free_swap / unitsize), unitname)) |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
250 endif |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
251 disp (sprintf ("Available RAM: %9.0f %s, total: %9.0f %s", |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
252 round (user.ram_available_all_arrays / unitsize), unitname, |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
253 round (user.MemAvailableAllArrays / unitsize), unitname)) |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
254 endif |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
255 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
256 endfunction |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
257 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
258 function [status, meminfo] = lmemory () |
30379
363fb10055df
maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29583
diff
changeset
|
259 |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
260 ## Read pseudo files to gather memory information on Linux |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
261 |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
262 ## Read the proc/self/status pseudofile. |
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
263 ## See https://linuxwiki.de/proc/pid#A.2Fproc.2Fpid.2Fstatus. |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
264 ## It contains a variable number of lines with name-value pairs. |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
265 |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
266 f = fopen ("/proc/self/status"); |
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
267 buffer = textscan (f, "%s %s", "delimiter", ':\n'); |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
268 fclose (f); |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
269 for i = 1:rows (buffer{1}) |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
270 status.(buffer{1}{i}) = textscan (buffer{2}{i}){1}; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
271 endfor |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
272 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
273 ## Read the /proc/meminfo pseudofile |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
274 ## see https://linuxwiki.de/proc/meminfo |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
275 ## It contains a variable number of lines with name-value pairs. |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
276 |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
277 f = fopen ("/proc/meminfo"); |
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
278 buffer = textscan (f, "%s %s", "delimiter", ':\n'); |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
279 fclose (f); |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
280 for i = 1:rows (buffer{1}) |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
281 meminfo.(buffer{1}{i}) = textscan (buffer{2}{i}){1}; |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
282 endfor |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
283 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
284 endfunction |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
285 |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
286 |
29583
59c5131d46af
memory.m: Skip function and tests on macOS.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29359
diff
changeset
|
287 %!testif ; (isunix () && ! ismac ()) || ispc () |
28372
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
288 %! [user, syst] = memory (); |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
289 %! assert (user.mem_used_octave > 0); |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
290 %! assert (user.ram_used_octave <= user.mem_used_octave); |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
291 %! assert (user.mem_used_octave < syst.SystemMemory.Total); |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
292 %! assert (user.MemAvailableAllArrays <= syst.SystemMemory.Available); |
2f571bfff344
Add "memory" function (patch #9924).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
diff
changeset
|
293 |
29583
59c5131d46af
memory.m: Skip function and tests on macOS.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29359
diff
changeset
|
294 %!testif ; (! isunix () || ismac ()) && ! ispc () |
28755
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
295 %! fail ("[user] = memory ()", |
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
296 %! "function not yet implemented for this architecture"); |
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
297 %! fail ("memory ()", "warning", |
c1a110df224e
memory.m: Use more Octave coding conventions.
Rik <rik@octave.org>
parents:
28754
diff
changeset
|
298 %! "function not yet implemented for this architecture"); |