SMI

初试 Open Service Mesh(OSM)

拈花ヽ惹草 提交于 2021-02-17 02:57:19
微软近期开源了一个新的名为 Open Service Mesh [1] 的项目并准备 捐赠给 CNCF [2] 。 基本介绍  Open Service Mesh (OSM) is a lightweight, extensible, Cloud Native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments. ” Open Service Mesh(OSM)是一个轻量级,可扩展的云原生服务网格,它使用户能够统一管理,保护和获得针对高度动态微服务环境的开箱即用的可观察性功能。 OSM 在 Kubernetes 上运行基于 Envoy 的控制平面,可以使用 SMI API 进行配置。它通过以 sidecar 的形式注入 Envoy 代理来工作。 控制面负责持续配置代理,以配置策略和路由规则等都保持最新。代理主要负责执行访问控制的规则,路由控制,采集 metrics 等。(这和目前我们常见到的 Service Mesh 方案基本都一样的) 显著特性 基于 Service Mesh Interface (SMI) 的实现,主要包括

pytorch的显存释放机制torch.cuda.empty_cache()

老子叫甜甜 提交于 2021-02-16 09:46:35
Pytorch已经可以自动回收我们不用的显存,类似于python的引用机制,当某一内存内的数据不再有任何变量引用时,这部分的内存便会被释放。但有一点需要注意,当我们有一部分显存不再使用的时候,这部分释放的显存通过Nvidia-smi命令是看不到的,举个例子: device = torch.device('cuda:0') # 定义两个tensor dummy_tensor_4 = torch.randn(120, 3, 512, 512).float().to(device) # 120*3*512*512*4/1000/1000 = 377.48M dummy_tensor_5 = torch.randn(80, 3, 512, 512).float().to(device) # 80*3*512*512*4/1000/1000 = 251.64M # 然后释放 dummy_tensor_4 = dummy_tensor_4.cpu() dummy_tensor_2 = dummy_tensor_2.cpu() # 这里虽然将上面的显存释放了,但是我们通过Nvidia-smi命令看到显存依然在占用 torch.cuda.empty_cache() # 只有执行完上面这句,显存才会在Nvidia-smi中释放 Pytorch的开发者也对此进行说明了,这部分释放后的显存可以用

解决photoshop illustrator CS6在高分屏下图标文字过小的情况

那年仲夏 提交于 2021-02-12 08:23:13
参考的一位国外的大神的经验。 1、开始-运行-regedit 打开注册表编辑器;在地址栏输入“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide”,回车展开;右侧空白处右键点击新建-DWORD(32位)值;键名重命名为PreferExternalManifest;右键点击此键,设置键值为1(10进制)。 2、在Photoshop(illustrator )的安装目录下新建名为Photoshop.exe.manifest(Illustrator.exe.manifest)的文件,注意该文件与photoshop.exe(illustrator.exe)位于同一目录,文件内容如下: <?xml version= " 1.0 " encoding= " UTF-8 " standalone= " yes " ?> <assembly xmlns= " urn:schemas-microsoft-com:asm.v1 " manifestVersion= " 1.0 " xmlns:asmv3= " urn:schemas-microsoft-com:asm.v3 " > <dependency> <dependentAssembly> < assemblyIdentity type = "

SNMP

好久不见. 提交于 2021-02-07 04:19:53
背景知识 SNMP开发于九十年代早期,其目的是简化大型网络中设备的管理和数据的获取。许多与网络有关的 软件 包,如HP的Open View和Nortel Networks的Optivity Network Management System,还有Multi Router Traffic Grapher(MRTG)之类的 免费软件 ,都用SNMP服务来简化网络的管理和维护。 概念 是一种在IP网络中管理 网络节点 (如服务器、工作站、路由器、交换机等)的标准协议 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个 应用层 协议(application layer protocol)、 数据库模型 (database schema)和一组资源对象。 SNMP的目标是管理 互联网 Internet上众多厂家生产的软硬件平台 SNMP为 应用层 协议,是TCP/IP协议族的一部分。它通过 用户数据报协议 (UDP)来操作 由于SNMP的效果实在太好了,所以网络硬件厂商开始把SNMP加入到它们制造的每一台设备。今天,各种网络设备上都可以看到默认启用的SNMP服务,从 交换机 到 路由器 ,从 防火墙 到 网络打印机 ,无一例外。 仅仅是分布广泛还不足以造成威胁,问题是许多厂商安装的SNMP都采用了 默认 的通信字符串(例如密码),这些 通信字符串

electron应用以管理员权限启动

帅比萌擦擦* 提交于 2021-01-29 09:21:19
最近在用electron开发PC桌面应用,其中有个需求就是整个应用以管理员权限启动。很头痛,各种google,baidu。 最后终于解决了,可以分为三个步骤,做个总结分享。   一、如果没有manifest.xml文件的话 可通过执行命令:mt.exe -inputresource:某某.exe -out:extracted.manifest导出 manifest.xml;   二、如果有的manifest.xml文件的话,按照标红处修改; <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity> </dependentAssembly> <

STM32F4以太网MAC接口

谁说胖子不能爱 提交于 2021-01-19 01:12:31
STM32F407自带有10/100Mbit/s的以太网MAC内核,STM32F407的ETH框图如下: F407的MAC有3种接口:SMI、MII和RMII。下面依次介绍这3种接口。 ①SMI接口 SMI接口为站管理接口,程序中可以通过这个接口来访问PHY寄存器。SMI接口有两条线:数据线MDIO和时钟线MDC。该接口可支持访问最多32个PHY。 MDC:周期性时钟,提供以最大频率2.5MHZ传输数据时的参考时序,在空闲状态下,SMI管理接口将MDC信号的时钟信号驱动为低电平。 MDIO:数据输入/输出比特流,用于通过MDC时钟信号向PHY设备同步传输信息。 ②MII接口 MII接口:介质独立接口 (MII) 定义了 10 Mbit/s 和 100 Mbit/s 的数据传输速率下 MAC 子层与 PHY 之间的互连。 MII 包括 16 个数据和控制信号的引脚。 TX_CLK和RX_CLK为发送和接收连续时钟,当速率为10Mbit/s时为2.5MHZ,速率为100Mbit/s时为25MHZ。 要生成TX_CLK和RX_CLK时钟,必须向外部PHY提供25MHZ时钟,通常我们使用25M的晶振,也可以使用STM32F4xx的MCO引脚输出25MHZ的时钟。 ③RMII接口 介质独立接口 (RMII) 规范降低了 10/100 Mbit/s 下微控制器以太网外设与外部 PHY 间的

网络通信实验(1)STM32F4 以太网简介

五迷三道 提交于 2021-01-18 08:20:07
STM32F4 以太网简介 STM32F407 芯片自带以太网模块,该模块包括带专用 DMA 控制器的 MAC 802.3 (介质访 问控制)控制器,支持介质独立接口 (MII) 和简化介质独立接口 (RMII) ,并自带了一个用于 外部 PHY 通信的 SMI 接口, 通过一组配置寄存器,用户可以为 MAC 控制器和 DMA 控制器选 择所需模式和功能。 STM32F4 自带以太网模块特点包括:  支持外部 PHY 接口,实现 10M/100Mbit/s 的数据传输速率  通过符合 IEEE802.3 的 MII/RMII 接口与外部以太网 PHY 进行通信  支持全双工和半双工操作  可编程帧长度,支持高达 16KB 巨型帧  可编程帧间隔( 40~96 位时间,以 8 为步长)  支持多种灵活的地址过滤模式  通过 SMI ( MDIO )接口配置和管理 PHY 设备  支持以太网时间戳(参见 IEEE1588-2008 ),提供 64 位时间戳  提供接收和发送两组 FIFO 。  支持 DMA STM32F4 以太网功能框图如图 从上图可以看出, STM32F4 是必须外接 PHY 芯片,才可以完成以太网通信的,外部 PHY 芯片可以通过 MII/RMII 接口与 STM32F4 内部 MAC 连接,并且支持 SMI ( MDIO&MDC )接

RabbitMQ Node.js 示例

老子叫甜甜 提交于 2021-01-14 07:39:23
<table class="d-block"> <tbody class="d-block"> <tr class="d-block"> <td class="d-block comment-body markdown-body js-comment-body"> <p>RabbitQM 处理和管理消息队列的中间人(broker)。可简单理解为邮局,你在程序中写好消息,指定好收件人,剩下的事件就是 RabbitMQ 的工作了,它会保证收件人正确收到邮件。</p> <p>任何发送邮件的程序都是 <code>Producer</code>,消息队列可理解为邮筒,新件将堆积在此处。所有待处理的消息都以队列形式存储,总体上看来就是一个巨大的消息 buffer,至于存储量与设置的内存及硬件有关。任何应用都可以向队列添加消息,也可以多个消费者都在从队列中获取消息。</p> <p>而 <code>consumer</code> 即是消息队列中消息的应用,其处于等待接收来自 RabbitMQ 发送来的消息。</p> <p>消息生产者,消费者及 RabbitMQ 这个中间人三者不必同时存在于同一机器上,实际运用时也确实大部分不会部署在同一机器上,比如有专门的机器作为 RabbitMQ 实体,而应用程序会部署在其他的集群。应用程序可以是同时负责生产消息的,也同时是消费者。</p> <p align=

nvidia-smi 命令解读

余生颓废 提交于 2021-01-10 15:20:48
nvidia-smi 的定义: 基于 NVIDIA Management Library (NVIDIA 管理库),实现 NVIDIA GPU 设备的管理和监控功能 主要支持 Tesla, GRID, Quadro 以及 TitanX 的产品,有限支持其他的 GPU 产品 所以我们在常见的 NVIDIAGPU 产品上安装完驱动后,都同时安装上 nvidia-smi 管理工具,帮助管理人员通过命令行的方式对 GPU 进行监控和管理。 当我们成功部署了 GRID 软件以后,我们可以通过以下 nvidia-smi 命令实现对 GPU 的管理。 nvidia-smi 会随着 GRID 软件不断的升级,而功能不断的丰富,所以当我们在执行一些复杂的 nvidia-smi 命令时,可能早期的 GRID 版本无法支持这些命令。 以下 nvidia-smi 常用命令行是个人推荐了解的: nvidia-smi 这是服务器上特斯拉 K80 的信息。 上面的表格中: 第一栏的 Fan:N/A 是风扇转速,从 0 到 100% 之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能打不到显示的转速。有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外设保持低温(比如我们实验室的服务器是常年放在空调房间里的)。 第二栏的 Temp:是温度,单位摄氏度。 第三栏的 Perf:是性能状态,从

JavaScript优化技巧

无人久伴 提交于 2020-12-18 23:19:13
作为开发人员,我们一直在寻找让我们的代码更快更好的方法。但在此之前,编写高性能代码需要做三件事: 了解语言及其工作原理 基于用例进行设计 调试!修复!重复 记住这一点 任何傻瓜都可以编写计算机可以理解的代码,优秀的程序员编写人类可以理解的代码。- 丁·福勒 我们来看看如何使 JavaScript代码运行得更快。 延迟 延迟算法将计算延迟到需要执行时才执行,然后生成结果。 const someFn = () => { doSomeOperation() return () => { doExpensiveOperation() } } const t = someArray.filter((x) => checkSomeCondition(x)).map((x) => someFn(x)) // 现在,如果有需要在执行 t.map((x) => t()) 最快的代码是未执行的代码,所以尽量延迟执行。 JavaScript 使用原型继承,JS 中所有对象都是Object的实例。 MDN说: 尝试访问对象的属性时,不仅会在对象上搜索该属性,还会在对象的原型,原型的原型等上搜索该属性,直到找到匹配属性名或原型链的末端。 对于每个属性,JavaScript引擎都必须遍历整个对象链,直到找到匹配项。 如果使用不当,这会占用大量资源,并影响应用程序的性能。 所以不要这样: const name