talm

Форк
0
/
imported_memory.go 
177 строк · 6.6 Кб
1
// Code generated by go run tools/import_commands.go --talos-version v1.7.1 memory
2
// DO NOT EDIT.
3

4
// This Source Code Form is subject to the terms of the Mozilla Public
5
// License, v. 2.0. If a copy of the MPL was not distributed with this
6
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
7

8
package commands
9

10
import (
11
	"context"
12
	"fmt"
13
	"os"
14
	"text/tabwriter"
15

16
	"github.com/spf13/cobra"
17
	"google.golang.org/grpc"
18
	"google.golang.org/grpc/peer"
19

20
	"github.com/siderolabs/talos/cmd/talosctl/pkg/talos/helpers"
21
	"github.com/siderolabs/talos/pkg/cli"
22
	machineapi "github.com/siderolabs/talos/pkg/machinery/api/machine"
23
	"github.com/siderolabs/talos/pkg/machinery/client"
24
)
25

26
var verbose bool
27

28
// memoryCmd represents the processes command.
29
var memoryCmd = &cobra.Command{
30
	Use:     "memory",
31
	Aliases: []string{"m", "free"},
32
	Short:   "Show memory usage",
33
	Long:    ``,
34
	Args:    cobra.NoArgs,
35
	RunE: func(cmd *cobra.Command, args []string) error {
36
		return WithClient(func(ctx context.Context, c *client.Client) error {
37
			var remotePeer peer.Peer
38

39
			resp, err := c.Memory(ctx, grpc.Peer(&remotePeer))
40
			if err != nil {
41
				if resp == nil {
42
					return fmt.Errorf("error getting memory stats: %s", err)
43
				}
44

45
				cli.Warning("%s", err)
46
			}
47

48
			if verbose {
49
				verboseRender(&remotePeer, resp)
50
			} else {
51
				err = briefRender(&remotePeer, resp)
52
				if err != nil {
53
					return err
54
				}
55
			}
56

57
			return helpers.CheckErrors(resp.Messages...)
58
		})
59
	},
60
}
61

62
func briefRender(remotePeer *peer.Peer, resp *machineapi.MemoryResponse) error {
63
	w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0)
64
	fmt.Fprintln(w, "NODE\tTOTAL\tUSED\tFREE\tSHARED\tBUFFERS\tCACHE\tAVAILABLE")
65

66
	defaultNode := client.AddrFromPeer(remotePeer)
67

68
	for _, msg := range resp.Messages {
69
		node := defaultNode
70

71
		if msg.Metadata != nil {
72
			node = msg.Metadata.Hostname
73
		}
74

75
		// Default to displaying output as MB
76
		fmt.Fprintf(w, "%s\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",
77
			node,
78
			msg.Meminfo.Memtotal/1024,
79
			(msg.Meminfo.Memtotal-msg.Meminfo.Memfree-msg.Meminfo.Cached-msg.Meminfo.Buffers)/1024,
80
			msg.Meminfo.Memfree/1024,
81
			msg.Meminfo.Shmem/1024,
82
			msg.Meminfo.Buffers/1024,
83
			msg.Meminfo.Cached/1024,
84
			msg.Meminfo.Memavailable/1024,
85
		)
86
	}
87

88
	return w.Flush()
89
}
90

91
func verboseRender(remotePeer *peer.Peer, resp *machineapi.MemoryResponse) {
92
	defaultNode := client.AddrFromPeer(remotePeer)
93

94
	// Dump as /proc/meminfo
95
	for _, msg := range resp.Messages {
96
		node := defaultNode
97

98
		if msg.Metadata != nil {
99
			node = msg.Metadata.Hostname
100
		}
101

102
		fmt.Printf("%s: %s\n", "NODE", node)
103
		fmt.Printf("%s: %d %s\n", "MemTotal", msg.Meminfo.Memtotal, "kB")
104
		fmt.Printf("%s: %d %s\n", "MemFree", msg.Meminfo.Memfree, "kB")
105
		fmt.Printf("%s: %d %s\n", "MemAvailable", msg.Meminfo.Memavailable, "kB")
106
		fmt.Printf("%s: %d %s\n", "Buffers", msg.Meminfo.Buffers, "kB")
107
		fmt.Printf("%s: %d %s\n", "Cached", msg.Meminfo.Cached, "kB")
108
		fmt.Printf("%s: %d %s\n", "SwapCached", msg.Meminfo.Swapcached, "kB")
109
		fmt.Printf("%s: %d %s\n", "Active", msg.Meminfo.Active, "kB")
110
		fmt.Printf("%s: %d %s\n", "Inactive", msg.Meminfo.Inactive, "kB")
111
		fmt.Printf("%s: %d %s\n", "ActiveAnon", msg.Meminfo.Activeanon, "kB")
112
		fmt.Printf("%s: %d %s\n", "InactiveAnon", msg.Meminfo.Inactiveanon, "kB")
113
		fmt.Printf("%s: %d %s\n", "ActiveFile", msg.Meminfo.Activefile, "kB")
114
		fmt.Printf("%s: %d %s\n", "InactiveFile", msg.Meminfo.Inactivefile, "kB")
115
		fmt.Printf("%s: %d %s\n", "Unevictable", msg.Meminfo.Unevictable, "kB")
116
		fmt.Printf("%s: %d %s\n", "Mlocked", msg.Meminfo.Mlocked, "kB")
117
		fmt.Printf("%s: %d %s\n", "SwapTotal", msg.Meminfo.Swaptotal, "kB")
118
		fmt.Printf("%s: %d %s\n", "SwapFree", msg.Meminfo.Swapfree, "kB")
119
		fmt.Printf("%s: %d %s\n", "Dirty", msg.Meminfo.Dirty, "kB")
120
		fmt.Printf("%s: %d %s\n", "Writeback", msg.Meminfo.Writeback, "kB")
121
		fmt.Printf("%s: %d %s\n", "AnonPages", msg.Meminfo.Anonpages, "kB")
122
		fmt.Printf("%s: %d %s\n", "Mapped", msg.Meminfo.Mapped, "kB")
123
		fmt.Printf("%s: %d %s\n", "Shmem", msg.Meminfo.Shmem, "kB")
124
		fmt.Printf("%s: %d %s\n", "Slab", msg.Meminfo.Slab, "kB")
125
		fmt.Printf("%s: %d %s\n", "SReclaimable", msg.Meminfo.Sreclaimable, "kB")
126
		fmt.Printf("%s: %d %s\n", "SUnreclaim", msg.Meminfo.Sunreclaim, "kB")
127
		fmt.Printf("%s: %d %s\n", "KernelStack", msg.Meminfo.Kernelstack, "kB")
128
		fmt.Printf("%s: %d %s\n", "PageTables", msg.Meminfo.Pagetables, "kB")
129
		fmt.Printf("%s: %d %s\n", "NFSUnstable", msg.Meminfo.Nfsunstable, "kB")
130
		fmt.Printf("%s: %d %s\n", "Bounce", msg.Meminfo.Bounce, "kB")
131
		fmt.Printf("%s: %d %s\n", "WritebackTmp", msg.Meminfo.Writebacktmp, "kB")
132
		fmt.Printf("%s: %d %s\n", "CommitLimit", msg.Meminfo.Commitlimit, "kB")
133
		fmt.Printf("%s: %d %s\n", "CommittedAS", msg.Meminfo.Committedas, "kB")
134
		fmt.Printf("%s: %d %s\n", "VmallocTotal", msg.Meminfo.Vmalloctotal, "kB")
135
		fmt.Printf("%s: %d %s\n", "VmallocUsed", msg.Meminfo.Vmallocused, "kB")
136
		fmt.Printf("%s: %d %s\n", "VmallocChunk", msg.Meminfo.Vmallocchunk, "kB")
137
		fmt.Printf("%s: %d %s\n", "HardwareCorrupted", msg.Meminfo.Hardwarecorrupted, "kB")
138
		fmt.Printf("%s: %d %s\n", "AnonHugePages", msg.Meminfo.Anonhugepages, "kB")
139
		fmt.Printf("%s: %d %s\n", "ShmemHugePages", msg.Meminfo.Shmemhugepages, "kB")
140
		fmt.Printf("%s: %d %s\n", "ShmemPmdMapped", msg.Meminfo.Shmempmdmapped, "kB")
141
		fmt.Printf("%s: %d %s\n", "CmaTotal", msg.Meminfo.Cmatotal, "kB")
142
		fmt.Printf("%s: %d %s\n", "CmaFree", msg.Meminfo.Cmafree, "kB")
143
		fmt.Printf("%s: %d\n", "HugePagesTotal", msg.Meminfo.Hugepagestotal)
144
		fmt.Printf("%s: %d\n", "HugePagesFree", msg.Meminfo.Hugepagesfree)
145
		fmt.Printf("%s: %d\n", "HugePagesRsvd", msg.Meminfo.Hugepagesrsvd)
146
		fmt.Printf("%s: %d\n", "HugePagesSurp", msg.Meminfo.Hugepagessurp)
147
		fmt.Printf("%s: %d %s\n", "Hugepagesize", msg.Meminfo.Hugepagesize, "kB")
148
		fmt.Printf("%s: %d %s\n", "DirectMap4k", msg.Meminfo.Directmap4K, "kB")
149
		fmt.Printf("%s: %d %s\n", "DirectMap2M", msg.Meminfo.Directmap2M, "kB")
150
		fmt.Printf("%s: %d %s\n", "DirectMap1G", msg.Meminfo.Directmap1G, "kB")
151
	}
152
}
153

154
func init() {
155
	memoryCmd.Flags().StringSliceVarP(&memoryCmdFlags.configFiles,
156
		"file", "f", nil, "specify config files or patches in a YAML file (can specify multiple)",
157
	)
158
	memoryCmd.PreRunE = func(cmd *cobra.Command, args []string) error {
159
		nodesFromArgs :=
160
			len(GlobalArgs.Nodes) > 0
161
		endpointsFromArgs := len(GlobalArgs.Endpoints) > 0
162
		for _, configFile := range memoryCmdFlags.configFiles {
163
			if err := processModelineAndUpdateGlobals(configFile, nodesFromArgs,
164
				endpointsFromArgs, false); err != nil {
165
				return err
166
			}
167
		}
168
		return nil
169
	}
170

171
	memoryCmd.Flags().BoolVarP(&verbose, "verbose", "v", false, "display extended memory statistics")
172
	addCommand(memoryCmd)
173
}
174

175
var memoryCmdFlags struct {
176
	configFiles []string
177
}
178

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.