cpu参数

pytorch加载模型时使用map_location来在CPU、GPU间辗转腾挪

拟墨画扇 提交于 2020-01-14 07:36:54
假设我们只保存了模型的参数(model.state_dict())到文件名为modelparameters.pth, model = Net() cpu -> cpu或者gpu -> gpu: checkpoint = torch.load('modelparameters.pth') model.load_state_dict(checkpoint) cpu -> gpu 1 torch.load('modelparameters.pth', map_location=lambda storage, loc: storage.cuda(1)) gpu 1 -> gpu 0 torch.load('modelparameters.pth', map_location={'cuda:1':'cuda:0'}) gpu -> cpu torch.load('modelparameters.pth', map_location=lambda storage, loc: storage) 来源: CSDN 作者: 羊城迷鹿 链接: https://blog.csdn.net/jining11/article/details/103825447

Kubernetes-运维指南

◇◆丶佛笑我妖孽 提交于 2020-01-14 04:54:29
Node隔离与恢复 cat unschedule_node.yaml apiVersion: kind: Node metadata: name: k8s-node-1 labels: kubernetes.io/hostname: k8s-node-1 sepc: unschedulable: true kubectl replace -f unschedule_node.yaml kubectl patch node k8s-node-a -p '{"spec":{"unschedulable":"true"}' kubectl cordon k8s-node-1(对节点进行隔离) kubectl uncordon k8s-node-1(对节点进行恢复) Node的扩容 在新节点上安装Docker、kubelet、kube-proxy服务,并修改kubelet和kube-proxy的启动参数将Master URL指定为当前集群的Master的地址,最后启动这些服务。 更新资源对象的Label kubectl lable pod redis-master-bobr role=backend kubectl get pods -Lrole kubectl label pod redis-master-bobr0 role- kubectl label pod redis

线程池参数设置(二)

南楼画角 提交于 2020-01-13 16:58:05
在如今的多核处理器时代,多线程技术发挥着巨大的作用,尤其对于大批量处理同类型IO密集型的任务,例如全库全表查找数据时,多线程是提升速度和性能的利器。 近期发布的另一篇文章已经详细介绍了线程池的技术原理。但平时的开发工作中,我们可能更加关注的是线程池的使用,线程数设置多大啊?队列大小设置多大啊,等问题。 这篇文章主要是针对前段时间对线程池的使用过程中,总结了几点参数设置方面的建议,希望对大家有用。 使用多线程时,会面临 线程数,队列大小(corePoolSize maxPoolSize queueCapacity) 三个重要参数的大小设置问题。 我根据自己前期的工作总结发现参数设置主要考虑下面几个方面: 1. 线程池中执行的任务性质。 计算密集型的任务比较占cpu,所以一般线程数设置的大小 等于或者略微大于 cpu的核数;但IO型任务主要时间消耗在 IO等待上,cpu压力并不大,所以线程数一般设置较大,例如 多线程访问数据库,数据库有128个表,可能就直接考虑使用128个线程。 2. CPU使用率。 当线程数设置较大时,会有如下几个问题:第一,线程的初始化,切换,销毁等操作会消耗不小的cpu资源,使得cpu利用率一直维持在较高水平。第二,线程数较大时,任务会短时间迅速执行,任务的集中执行也会给cpu造成较大的压力。第三, 任务的集中支持,会让cpu的使用率呈现锯齿状

CentOS查看CPU、内存、网络流量和磁盘 I/O

偶尔善良 提交于 2020-01-13 07:50:16
安装 yum install -y sysstat sar -d 1 1 rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s rsec/s: 每秒读扇区数。即 delta(rsect)/s wsec/s: 每秒写扇区数。即 delta(wsect)/s rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算) wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算) avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio) avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。 await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio) svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio) %util:

Linux系统资源使用情况

最后都变了- 提交于 2020-01-13 06:55:33
概述: 用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况... 还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多。 top: 主要参数 d:指定更新的间隔,以秒计算。 q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。 c:显示进程完整的路径与名称。 S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。 s:安全模式。 i:不显示任何闲置(Idle)或无用(Zombie)的行程。 n:显示更新的次数,完成后将会退出to 显示参数: PID(Process ID):进程标示号。 USER:进程所有者的用户名。 PR:进程的优先级别。 NI:进程的优先级别数值。 VIRT:进程占用的虚拟内存值。 RES:进程占用的物理内存值。 SHR:进程使用的共享内存值。 S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。 %CPU:该进程占用的CPU使用率。 %MEM:该进程占用的物理内存和总内存的百分比。 TIME+:该进程启动后占用的总的CPU时间。 Command:进程启动的启动命令名称,如果这一行显示不下

高并发编程

浪子不回头ぞ 提交于 2020-01-13 03:35:43
(一)高并发编程基础知识 这里涉及到一些基础的概念,我重新捧起了一下《实战 Java 高并发程序设计》这一本书,感觉到心潮澎湃,这或许就是笔者叙述功底扎实的魅力吧,喜欢。对于并发的基础可以参照一下我之前写过的一篇博文: Java学习笔记(4)——并发基础 1)多线程和单线程的区别和联系? 答: 在单核 CPU 中,将 CPU 分为很小的时间片,在每一时刻只能有一个线程在执行,是一种微观上轮流占用 CPU 的机制。 多线程会存在线程上下文切换,会导致程序执行速度变慢,即采用一个拥有两个线程的进程执行所需要的时间比一个线程的进程执行两次所需要的时间要多一些。 结论:即采用多线程不会提高程序的执行速度,反而会降低速度,但是对于用户来说,可以减少用户的响应时间。 面试官:那使用多线程有什么优势? 解析:尽管面临很多挑战,多线程有一些优点仍然使得它一直被使用,而这些优点我们应该了解。 答: (1)资源利用率更好 想象一下,一个应用程序需要从本地文件系统中读取和处理文件的情景。比方说,从磁盘读取一个文件需要5秒,处理一个文件需要2秒。处理两个文件则需要: 1| 5秒读取文件A 2| 2秒处理文件A 3| 5秒读取文件B 4| 2秒处理文件B 5| --------------------- 6| 总共需要14秒 从磁盘中读取文件的时候,大部分的CPU时间用于等待磁盘去读取数据。在这段时间里

CentOS查看CPU、内存、网络流量和磁盘 I/O【详细】

佐手、 提交于 2020-01-13 01:13:09
安装 yum install -y sysstat sar -d 1 1 rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s rsec/s: 每秒读扇区数。即 delta(rsect)/s wsec/s: 每秒写扇区数。即 delta(wsect)/s rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算) wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算) avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio) avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。 await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio) svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio) %util:

关于MySQL的基准测试

痴心易碎 提交于 2020-01-13 00:15:03
什么是基准测试 当我们对数据库进行优化后,只有进行测量系统性能才能知道优化是否有效,这种测量的方式就是基准测试。基准测试的定义如下: 基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软/硬件变化时,重新进行基准测试以评估变化对性能的影响 我们可以这样认为: 基准测试是针对系统设置的一种压力测试,可以用来观察系统在不同压力下的行为。评估系统的容量,观察系统如何处理不同的数据。 但是基于测试不等同于压力测试: 基于测试:直接、简单、易于比较,用于评估服务器的处理能力。基准测试可能不关心业务逻辑,所使用的查询和业务的真实性可以和业务环节没有关系 压力测试:对真实的业务数据进行测试,获得真实系统所能承受的压力。压力测试需要针对不同的主题,所使用的数据和查询也是真实用到的 对MySQL进行基准测试的目的: 1、建立MySQL服务器的性能基准线,确定当前MySQL服务器的运行情况 2、模拟比当前系统更高的负载,以找出系统的扩展瓶颈。增加数据库的并发,观察QPS、TPS的变化,以确定并发量与性能最优的关系 3、测试不同的硬件、软件和操作系统配置 4、证明新的硬件设备是否配置正确 如何进行基准测试 通常来说,基准测试有两种方式: 1、对整个系统进行基准测试:从系统的入口进行测试(网站Web前端,手机APP前端) 优点:能够测试整个系统的性能,包括web服务器缓存

JVM之GC算法的实现(垃圾回收器)

こ雲淡風輕ζ 提交于 2020-01-12 14:33:21
上一节: 《JVM之GC算法》 知道GC算法的理论基础,我们来看看具体的实现。只有落地的理论,才是真理。 一、JVM垃圾回收器的结构 JVM虚拟机规范对垃圾收集器应该如何实现没有规定,因为没有最好的垃圾收集器,只有最适合的场景。 图中展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,则说明它们可以搭配使用。虚拟机所处的区域则表示它是属于新生代还是老年代收集器。 7种:serial收集器、parnew收集器、parallel scavenge收集器、serial old 收集器、parallel old收集器、cms收集器、g1收集器(整堆收集器)、 串行收集:单垃圾收集线程,进行收集工作,用户进程需要等待 并行收集:工作原理与串行一样,只是在收集垃圾时是多条线程同时进行,收集的效率在一般情况下自然高于单线程。 并发收集:指用户线程与垃圾收集线程同时工作(并发:同一时间间隔)。用户程序在继续运行,而垃圾收集程序运行在另一个CPU上。 吞吐量:吞吐量就是CPU中用于运行用户代码的时间与CPU总消耗时间的比值(吞吐量 = 运行用户代码时间 / (运行用户代码时间 + 垃圾收集时间)) 1、Serial收集器 Serial(串行)收集器:最基本,最古老的收集器,只有一个线程进行垃圾收集器的工作,并且在进行垃圾收集工作时需要暂停其他工作线程(stop the word)

设计模式 —— 建造者模式

别等时光非礼了梦想. 提交于 2020-01-12 13:48:27
一.什么是构建者模式: 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了 复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具 有复合属性的对象。 二.适用场景: 1、隔离复杂对象的创建和使用,相同的方法,不同执行顺序,产生不同事件结果 2、多个部件都可以装配到一个对象中,但产生的运行结果不相同 3、产品类非常复杂或者产品类因为调用顺序不同而产生不同作用 4、初始化一个对象时,参数过多,或者很多参数具有默认值 5、不适合创建差异性很大的产品类产品内部变化复杂,会导致需要定义很多具体建造者类实现变化, 增加项目中类的数量,增加系统的理解难度和运行成本 6、需要生成的产品对象有复杂的内部结构,这些产品对象具备共性 三.主要作用: 在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。 用户只需要给出指定复杂对象的类型和内容; 建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来) 四.解决的问题: 方便用户创建复杂的对象(不需要知道实现过程) 代码复用性 & 封装性(将对象构建过程和细节进行封装 & 复用) 五.优缺点: 优点: 使用建造者模式可以使客户端不必知道产品内部组成的细节。 具体的建造者类之间是相互独立的,这有利于系统的扩展。 具体的建造者相互独立