基于DCGM和Prometheus的GPU监控方案

基于DCGM和Prometheus的GPU监控方案 背景: 在早期的GPU监控中我们会使用一些NVML工具来对GPU卡的基本信息进行采集,并持久化到监控系统的数据存储层。因为我们知道,其实通过nvidia-smi这样的命令也是可以获取到GPU的基本信息的,但随着整个AI市场的发展和成熟,对于GPU的监控也越来越需要一套标准化的工具体系,也就是本篇文章讲的关于DCGM相关的监控解决方案。 DCGM(Data Center GPU Manager)即数据中心GPU管理器,是一套用于在集群环境中管理和...阅读全文

简书 2020-04-05 20:32:49 BGbiao

气象台如何通知展示台——观察者模式

观察者模式 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 当新类型的观察者出现时,主题的代码不需要改变,我们需要做的是在新的类里实现观察者的接口,然后注册给主题即可。主题不在乎别的,它只会发送通知给所有实现了观察者接口的对象。 改变主题或观察者其中一方,并不会影响另一方,因为两者是松耦合的,只要它们之间的接口仍被遵守,我们就可以自由地改变它们。 接口设计 主题: 我们的主题应该至少拥...阅读全文

Segmentfault 2020-04-07 14:32:34 byte

Go语言库系列之aurora

背景介绍 今天跟大家推荐一款可以给终端输出上色的工具--aurora。 极速上手 准备工作 初始化项目 go mod init aurora 演示项目结构 . ├── go.mod ├── go.sum └── main.go 安装aurora包 go get -u github.com/logrusorgru/aurora 代码演示 首先引入aurora库 import . "github.com/logrusorgru/aurora" 输出一个品红颜色的内容,Magenta是以颜色命名的方法...阅读全文

Segmentfault 2020-04-07 13:32:34 平也

牛客网 Java专项练习 选择题错题 [4]

1.Java有5种方式来创建对象: 使用 new 关键字(最常用): ObjectName obj = new ObjectName(); 使用反射的Class类的newInstance()方法: ObjectName obj = ObjectName.class.newInstance(); 使用反射的Constructor类的newInstance()方法: ObjectName obj = ObjectName.class.getConstructor.newInstance(); 使用对...阅读全文

简书 2020-04-05 13:32:48 是小猪童鞋啦

5.流程控制

Go语言基础之流程控制 Golang 流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。 Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。 if else(分支结构) if条件判断基本写法 Go语言中if条件判断的格式如下: if 表达式1 { 分支1 } else if 表达式2 { 分支2 } else{ 分支3 } 当表达式1的结果为true时,执行分支1,否则判断...阅读全文

简书 2020-04-05 13:32:48 雪上霜

6.运算符

Go语言基础之运算符 | Golang 运算符用于在程序运行时执行数学或逻辑运算。 运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算数运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 求余 注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。 关系运算符 运算符 描述 == 检查两个值是否相等,如果相等返回 True 否则返回 False。 != 检查两个值是否不相等,如果不相等返回 True 否则返回 Fal...阅读全文

简书 2020-04-05 13:32:48 雪上霜

7.数组

Go语言基础之数组 | Golang 本文主要介绍Go语言中数组(array)及它的基本使用。 Array(数组) 数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法: // 定义一个长度为3元素类型为int的数组a var a [3]int 数组定义: var 数组变量名 [元素数量]T 比如:var a [5]int, 数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。 [5]int和[10]in...阅读全文

简书 2020-04-05 13:32:47 雪上霜

8.切片

Go语言基础之切片 | Golang 本文主要介绍Go语言中切片(slice)及它的基本使用。 引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如: func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ sum = sum + v } return sum } 这个求和函数只能接受[3]int类型,其他的都不支持。 再比如, a := [3]int{1, 2, 3} 数组a中已经有三个元素了,我...阅读全文

简书 2020-04-05 13:32:44 雪上霜

TCP 编程

CS 结构 BS 结构 网络编程的基本介绍 Golang的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端必不可少也是至关重要的一部分 网络编程有两种: TCP socket编程 是网络编程的主流。之所以叫做 TCP socket编程,是因为底层是基于Tcp/ip 协议的 比如QQ聊天 b/s结构的 HTTP 编程 我们使用浏览器去访问服务器的时候,使用的就是HTTP协议,而HTTP低层依旧是用 tcp socket实现的 。比如 京东商城 TCP/IP 协议 这个协议是inte...阅读全文

简书 2020-04-05 13:32:43 乔大叶_803e

给鸭子加上火箭动力——策略模式

策略模式 问题引入 当我们有一堆鸭子,各个鸭子都有相同的游泳(swim),自我描述(display)方法,因为它们都会游泳和自我描述;但是不同的鸭子又有自己特有的飞行(fly),叫声(quack),这时如何使用设计模式来解决这样的问题呢? 首先会想到的方法是,有一个鸭子超类,swim和diplay作为公有的方法,不同鸭子的子类去覆盖实现各自的fly和quack方法,貌似就可以解决这个问题了 不过,每当新的鸭子类型出现,就需要重新去实现fly和quack方法;甚至如果多个鸭子类型拥有相同的fly或...阅读全文

Segmentfault 2020-04-07 10:32:33 byte

HTTP 记录响应报文 ResponseRecorder

背景 在返回响应报文到客户端时,需要保存整个记录。 Golang 标准库有实现:src/net/http/httptest/recorder.go ResponseRecorder,但是此不符合需求,会拦截 response ,不返回给客户端。想要的效果是返回给客户端的同时取得简单的响应的 response, 需要做简单的修改 ResponseRecorder // Copyright 2011 The Go Authors. All rights reserved. // Use of thi...阅读全文

简书 2020-04-05 02:32:43 七秒钟回忆待续

golang 函数定义

函数的定义 第一种 关键字 函数名(参数1 参数1类型,参数2 参数2类型……) 返回值 返回值类型 (可选){ 函数体 } 例子: func func_name(arg1 type_data, arg2 type_data……) return_val return_val_type { 函数体 } 第二种 关键字 函数名(可变长参数列表... 可变长参数列表类型) 返回值 返回值类型 (可选){ 函数体 } 例子: func func_name(args... args_list_type) ...阅读全文

简书 2020-04-05 02:32:43 小麦客

设计模式

课程使用语言 Java 1. Singleton 单例模式 保证在内存中只有一个实例。 1.1 饿汉式 类中定义出来此实例类型变量,并且设置为 私有 静态 和 final 的。(new 出实例。也可以用静态语句块方式定义) 类中将构造方法重写为 private 的,且不做任何事情。(其他人 New 不出来) 提供 public 方法返回此实例。 利用:JVM 每个 class 只会 load 到内存一次。 优点:简单实用,推荐使用。 缺点:类装载时就实例化了。(后来的懒加载是使用的时候加载,无此...阅读全文

简书 2020-04-05 02:32:42 Robin92

golang 代码结构

首先第一行声明包名,每一个go应用都应该有main包 package main 接下来引入其他包 import “fmt” fmt包实现格式化输出的函数 定义程序主函数 func main () {} 需要注意的点 go语言的大括号,左半部分不能单独占一行,必须跟在小括号后,不然会引起编译错误 go语言一行代码表示语句结束,不需要添加分号 函数内部才可以进行函数赋值,打印输出等等操作,函数外仅声明变量和函数,变量声明之后如果没被使用也会出现编译错误。 在代码完成后,可以执行go fmt xxxx...阅读全文

简书 2020-04-05 02:32:42 在水里等一只傻猫