-
GPU passthrough 填坑之路
前段时间因为工作需要,研究了一下 KVM GPU passthrough 相关机制。本以为这是成熟的机制,应该不会遇到什么坑,事实上,如果使用完整的 linux 发行版来操作,确实会是一帆风顺。可偏偏我这里是自己编译了一个精简版的kernel,以及自定义的 initd, 最终结果还算圆满,但是过程还是较为曲折,同时在这个过程中,也加深了对 bios/ovmf/kernel/qemu/kvm 等的理解。先简单介绍下基本环境:宿主机:ubuntu 16.04 | 2.5 qemu/kvm 客户...…
-
mount()系统调用&mount命令
###问题背景最近一直在研究runv(一个符合OCI标准的基于KVM容器运行时)。我们的场景主要是深度学习计算平台,目前在实现一个分布式训练计算资源的过程中,涉及到nfs的mount操作。普通的linux mount命令可以正常运行,但是通过c的系统调用mount()则失败,报错信息为invalid argument。###分析过程####man 2 mountSYNOPSIS #include <sys/mount.h> int mount(const char *s...…
-
大写数字转换成阿拉伯数据
以下代码支持千亿以内的转换。# -*- coding: utf-8 -*-digits = {u'一':1, u'二':2, u'三':3, u'四':4, u'五':5, u'六':6, u'七':7,u'八':8, u'九':9, u'零':0}units = {u'十':10, u'百':10**2, u'千':10**3, u'万':10**4, u'亿':10**8}def main(inputs): output = 0 unit = 0 midput = ...…
-
Generator in Python
在Python中,带有yield关键字的函数被称之为generator(生成器)。何为yield,又何为generator呢?首先给出一个概念性的认识,后续给出相应的例子来进行阐述。 一个带有yield关键字的函数就是一个generator,它是函数,但是又和普通函数不同;生成一个generator,形式上像是函数调用,但是它不会执行任何函数代码,直到对它进行next()或者send(None)调用才会开始执行。虽然执行流程和函数执行流程一样,但是,每当...…
-
umount异步机制
场景介绍 远程map一个块设备到机器上,并将这个设备挂在到某个挂载点,作为runc的rootfs使用 块设备上的文件系统为xfs 删除runc容器过程中,首先umount 挂载点,然后unmap这个块设备,这两个过程中在代码逻辑上是‘严格’顺序执行问题描述在umount文件系统的过程中,会大概率导致umount进程D住(处于Uninterruptible状态中),在dmesg看到的直接原因是:设备umap先于文件系统umount操作执行。但是在代码上,两个操作都是同步调用,即直到um...…
-
Multi-Line Strings in Python
在Python中,如何来定义一个多行的字符串呢?下面将介绍三种方法,以及他们的优缺点,最后会给出我自己的建议。连接(Concatenation)最容易联想到的就是连接字符串,如下:str1 = "This is the first line" + \ "The second line" + \ "end line"点评:这种方法非常难看,很不美观。稍微改良的一种方式就是去掉”+”,就像下面这样:str1 = "This is the first l...…
-
linux环境变量---查看和设置
1、查看linux环境变量 env 查看当前用户的所有环境变量; 查看单个环境变量值;如echo $PATH2、常用的环境变量 PATH:在shell中输入的所有命令都会在该目录查找命令路径;该变量在我们日常环境变量设置中相当常用; LD_LIBRARY_PATH:c程序相关的动态引用库路径;一般在程序运行过程中,需要调用c相关的库时,会到该路径下查到对应库; LIB:c程序相关的静态库路径;在安装或编译程序时,往往到该路径下查找链接库。3、环境变量设置1)用户可以用过编辑~/...…
-
有关标准方差的十万个为什么
Q1: 什么叫标准方差?A:标准方差(或者标准差,英语:Standard Deviation, SD),数学符号为 (sigma),在概率统计中作为一组数值的离散程度。标准差定义为:方差的算术平方根。Q2:方差又是什么?A:方差(Variance),在概率论中,一个随机变量的方差描述的是随机变量的离散程度,即该随机变量距离其期望值的距离。定义:设为服从分布的随机变量,如果是随机变量的期望值(平均数 ),则随机变量 的方差为:回到Q1,标准差的定义为:Q3:有了方差为什么需要标准差?A:方差...…
-
Python的`__slots__`魔法
在Python中,每个类都有实例属性,默认情况下Python用一个字典来保存一个对象的实例属性。这非常有用,因为它允许我们在运行时去设置任意的新属性。然而,对于有着已知属性的小类来说,它可能是个瓶颈,这个字典浪费了很多内存。Python不能在对象创建时直接分配一个固定量的内存来保存所有的属性,因此如果你创建许多对象(我指的是成千上万个),它会消耗掉很多内存。不过还是有一个方法来规避这个问题。这个方法需要使用__slots__来告诉Python不要使用字典,而且只给一个固定集合的属性分配空间...…
-
Python中的*args 和 **kwargs
*args 和 **kwargs 主要用于函数的定义,可以将不确定数量的参数传递给一个函数。*args的用法*args是用来发送一个非键值对的可变数量的参数列表给一个函数。例子1:def test_var_args(f_arg, *args): print "first normal arg:", f_arg for arg in args: print "another arg through *argv:", argtest_var_args(‘python...…