cpu参数

链家大数据多维分析引擎实践

被刻印的时光 ゝ 提交于 2019-12-08 22:29:17
前言 大数据背景下,传统关系型多维分析 ROLAP 引擎遇到极大挑战,因而链家转向基于 Hadoop 生态的 MOLAP(Kylin)及 HOLAP (多引擎)。在架构师实践日北京站中,链家大数据集群架构组负责人邓钫元进行演讲,分享了链家在多维分析引擎方面的一些实践经验,主要从 OLAP 的背景和简介、链家多维分析架构演进和展望、OLAP 平台链路优化这三部分来介绍。 一、OLAP 的背景和简介 > > > > 1. OLAP vs OLTP OLAP 翻译成中文叫 联机分析处理 ,OLTP 叫 联机事务处理 。OLTP 它的核心是事务,实际上就是我们常见的数据库。我们业务数据库就是面向于事务。它的并发量会比较高,但是操作的数据量会比较小。它是实时更新的。数据库的设计会按照 3NF 范式,更高的话可能会按照 BC 范式之类的来做。而 OLAP 的核心是分析,面向应用是分析决策,需要分析的数据级会非常大,可能 TB,甚至 PB 都会有。它的数据更新会稍微慢一些,它的设计一般是反范式的,因为面向分析。常见的是雪花模型和星型模型。 实际上 OLAP 是什么呢? 非常简单,就是一个 SQL,这里按照两个维度,一个 returnflag,一个 orderstatus 来做 Group By,然后做一下 Sum,Group By 这段就叫维度,From 这段叫做指标,非常简单。 > > > >

动手学PyTorch | (18) GPU计算

只愿长相守 提交于 2019-12-08 14:47:31
到⽬前为止,我们⼀直在使⽤CPU计算。对复杂的神经网络和⼤规模的数据来说,使用CPU来计算可能不够⾼效。在本节中,我们将介绍如何使用单块NVIDIA GPU来计算。所以需要确保已经安装好了PyTorch GPU版本(又可用的GPU资源)。 可以在命令行使用nvidia-smi查看显卡信息: nvidia-smi #Linux/Mac OS 目录 1. 计算设备 2. Tensor的GPU计算 3. 模型的GPU计算 4. 小结 1. 计算设备 PyTorch可以指定⽤来存储和计算的设备,如使⽤内存的CPU或者使用显存的GPU。默认情况下,PyTorch会将数据创建在内存,然后利用CPU来计算。 用torch.cuda.is_available()查看GPU是否可用: import torch from torch import nn torch.cuda.is_available() # cuda是否可用 查看GPU数量: torch.cuda.device_count() # gpu数量 查看当前GPU索引号,索引号从0开始: torch.cuda.current_device() # 当前设备索引, 从0开始 根据索引号查看GPU的名字: torch.cuda.get_device_name(0) # 返回gpu名字 2. Tensor的GPU计算 默认情况下

SSM Excel表格导出导入

≡放荡痞女 提交于 2019-12-08 08:23:35
项目中经常要用到Excel表格的导出导入。故此,写了一个测试。现在奉上源码。 项目的目录结构: 目录结构截图 页面展示截图: 导出截图 导入截图成功插入数据库 现在给出全部源码: 一: PoiService.java package com.bank.service; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss

线程绑定CPU核

喜欢而已 提交于 2019-12-07 21:36:57
简单地说, CPU 亲和性(affinity) 就是进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性。Linux 内核进程调度器天生就具有被称为 软 CPU 亲和性(affinity) 的特性,这意味着进程通常不会在处理器之间频繁迁移。这种状态正是我们希望的,因为进程迁移的频率小就意味着产生的负载小。 2.6 版本的 Linux 内核还包含了一种机制,它让开发人员可以编程实现 硬 CPU 亲和性(affinity) 。这意味着应用程序可以显式地指定进程在哪个(或哪些)处理器上运行。 1 概念 什么是 CPU Affinity ? Affinity 是进程的一个属性,这个属性指明了进程调度器能够把这个进程调度到哪些 CPU 上。 在 Linux 中,我们可以利用 CPU affinity 把一个或多个进程绑定到一个或多个 CPU 上。 CPU Affinity 分为 2 种, soft affinity 和 hard affinity 。 soft affinity 仅是一个建议,如果不可避免,调度器还是会把进程调度到其它的 CPU 上。 hard affinity 是调度器必须遵守的规则。 为什么需要 CPU 绑定? ●增加 CPU 缓存的命中率 CPU 之间是不共享缓存的,如果进程频繁的在各个 CPU 间进行切换,需要不断的使旧 CPU 的 cache

linux命令--vmstat命令&iostat命令

柔情痞子 提交于 2019-12-07 12:04:58
vmstat是virtual memory statistics的缩写,可以对操作系统的虚拟内存,进程和CPU进行监控 物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。 例子1 vmstat 5 6 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 3029876 199616 690980 0 0 0 2 3 2 0 0 100 0 0 0 0 0 3029752 199616 690980 0 0 0 41 1009 39 0 0 100 0 0 0 0 0 3029752 199616 690980 0 0 0 3 1004 36 0 0 100 0 0 0 0 0 3029752 199616 690980 0 0 0 4 1004 36 0 0 100 0 0 0 0 0 3029752 199616 690980 0 0 0 6

面试:史上最全多线程面试题 - (锁&内存模型&线程)

一个人想着一个人 提交于 2019-12-06 23:14:33
多线程经典面试题60问。 历史文章: dubbo&zookeeper55道高频面试题(附加答案) SpringCloud&SpringBoot经典面试题(附加答案) 1.什么是活锁、饥饿、无锁、死锁? 死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现 了这三种情况,即线程不再活跃,不能再正常地执行下去了。 死锁 死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等 对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。 举个例子,A 同学抢了 B 同学的钢笔,B 同学抢了 A 同学的书,两个人都相互占 用对方的东西,都在让对方先还给自己自己再还,这样一直争执下去等待对方还而 又得不到解决,老师知道此事后就让他们相互还给对方,这样在外力的干预下他们 才解决,当然这只是个例子没有老师他们也能很好解决,计算机不像人如果发现这 种情况没有外力干预还是会一直阻塞下去的。 活锁 活锁这个概念大家应该很少有人听说或理解它的概念,而在多线程中这确实存在。 活锁恰恰与死锁相反,死锁是大家都拿不到资源都占用着对方的资源,而活锁是拿 到资源却又相互释放不执行。当多线程中出现了相互谦让,都主动将资源释放给别 的线程使用,这样这个资源在多个线程之间跳动而又得不到执行,这就是活锁。 饥饿 我们知道多线程执行中有线程优先级这个东西

系统信息&&硬件信息查看

↘锁芯ラ 提交于 2019-12-06 17:41:26
系统信息&&硬件信息查看 一系统信息查看 (一)查看系统版本信息 [root@centos7 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@centos61 ~]# cat /etc/redhat-release CentOS release 6.8 (Final) (二)查看系统内核版本 [root@centos7 ~]# uname Linux [root@centos7 ~]# uname -r 3.10.0-957.el7.x86_64 [root@centos7 ~]# uname -a Linux centos7.com 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [root@centos61 ~]# uname -r 2.6.32-642.el6.x86_64 [root@centos61 ~]# uname -a Linux centos61.com 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 二查看硬件信息

深入浅出CAS

人盡茶涼 提交于 2019-12-06 17:40:37
后端开发中大家肯定遇到过实现一个线程安全的计数器这种需求,根据经验你应该知道我们要在多线程中实现 共享变量 的原子性和可见性问题,于是锁成为一个不可避免的话题,今天我们讨论的是与之对应的无锁 CAS。本文会从怎么来的、是什么、怎么用、原理分析、遇到的问题等不同的角度带你真正搞懂 CAS。 为什么要无锁 我们一想到在多线程下保证安全的方式头一个要拎出来的肯定是锁,不管从硬件、操作系统层面都或多或少在使用锁。锁有什么缺点吗?当然有了,不然 JDK 里为什么出现那么多各式各样的锁,就是因为每一种锁都有其优劣势。 使用锁就需要获得锁、释放锁,CPU 需要通过上下文切换和调度管理来进行这个操作,对于一个 独占锁 而言一个线程在持有锁后没执行结束其他的哥们就必须在外面等着,等到前面的哥们执行完毕 CPU 大哥就会把锁拿出来其他的线程来抢了(非公平)。锁的这种概念基于一种悲观机制,它总是认为数据会被修改,所以你在操作一部分代码块之前先加一把锁,操作完毕后再释放,这样就安全了。其实在 JDK1.5 使用 synchronized 就可以做到。 但是像上面的操作在多线程下会让 CPU 不断的切换,非常消耗资源,我们知道可以使用具体的某一类锁来避免部分问题。那除了锁的方式还有其他的吗?当然,有人就提出了无锁算法,比较有名的就是我们今天要说的 CAS(compare and swap)

提交并发量的方法:Java GC tuning :Garbage collector

只谈情不闲聊 提交于 2019-12-06 15:35:10
 三色算法,高效率垃圾回收,jvm调优  Garbage collector:垃圾回收器 What garbage? 没有任何引用指向它的对象 JVM GC回收算法: 引用计数法(ReferenceCounting) 给对象中添加一个引用计数器,每当有一个地方引用他时,计数器值就+1,;当引用失效时,计数器值就-1;任何时刻计数器为0的对象就是不可能在被使 优点:判定效率高 缺点:不会完全准确,因为如果出现两个对象相互引用的问题就不行了 很明显,到最后两个实例都不再用了(都等于null了),但是GC却无法回收,因为引用数不是0,而是1,这就造成了内存泄漏。也很明显,现在虚拟机都不采用此方式。 可达性分析算法(root seaching) 通过一系列的GC Roots的对象作为起始点,从这些根节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。 说明: (2.1)、红色代表不可达对象(可回收对象) (2.2)、千万注意!!!!!上图并不是说方法区全可达,虚拟机栈部分可达,本地方法栈全部不可达,而只是为了说明这三个部分可以作为GC Roots! 3、可以作为GC Roots的对象包括以下几点 (3.1)、虚拟机栈(栈帧中的本地变量表)中引用的对象。 (3.2)

Java并发编程系列-(1) 并发编程基础

萝らか妹 提交于 2019-12-06 15:21:47
1.并发编程基础 1.1 基本概念 CPU核心与线程数关系 Java中通过多线程的手段来实现并发,对于单处理器机器上来讲,宏观上的多线程并行执行是通过CPU的调度来实现的,微观上CPU在某个时刻只会运行一个线程。事实上,如果这些任务不存在阻塞,也就是程序中的某个任务因为该程序控制范围之外的某些条件(通常是I/O)而导致不能继续执行,由于在任务之间切换会产生开销,因此并行的效率可能没有顺序执行的效率高,并行也就没有意义。 一般来讲,CPU核心数和线程数的关系为核心数:线程数=1:1;但是如果使用了超线程技术,可以达到1:2甚至更多。 CPU调度方式 CPU采用时间片轮转机制,来调度不同的线程运行,又称RR调度,注意这样会导致上下文切换。如果线程数目过大,可能产生较大的线程切换开销。 线程和进程 进程 :进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。(包括程序段,相关数据段,和进程控制块PCB) 线程 :线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 关系:一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行