自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 智能教学系统 Cognitive Tutors: Lessons Learned

论文:“COGNITIVE TUTORS: LESSONS LEARNED (1995)”这篇论文总结了CMU用10年时间开发智能辅导系统(ITS:intelligent tutoring system)的经验。ITS的目的是要减少学习时间,提高学习质量。方法是:程序要能够判断学生对各知识点的掌握程序,然后有针对地向学生建议个性化的学习路线。目录要点认知模型贝叶斯知识追踪数学模型——隐马尔可夫模型(HMM)HMM三个基本问题实际用法缺点要点时间和领域——从1983年开始,一个计算机软件,用于教授L

2020-10-05 03:37:15 675

原创 Amazon Dynamo论文以及与Cassandra对比

在操作系统顶级会议SOSP2017 上,Dynamo于十年前发表的论文获得了Hall of Fame Award1。这种回顾性的表彰足以证明其影响力。它的贡献用一句话总结就是催生了一系列 NoSQL 分布式数据库。作者要解决什么问题?2004年,亚马逊公司使用的 Oracle 带有集群与备份的企业级数据库已经不堪重负。分析得知亚马逊公司70%的数据库操作都是拿着1个主键,去查一行(row)数据。这可以简化为key-value的查询。系统要能够横向扩展,就是说可以通过增加机器数量来扩展。高可用——

2020-09-06 12:40:28 333

原创 CMU15-445 PROJECT 4 - LOGGING & RECOVERY

2019 CMU 15-445 数据库目录2019 CMU 15-445 数据库介绍分析方法链接介绍这个作业主要是实现预写式日志(WAL)、要求缓冲区策略是“NO-FORCE / STEAL”。NO-FORCE / STEAL: 也就是事务提交的时候,不要求其修改的数据页落盘(NO-FORCE)。缓冲区管理器在需要的时候,可以将尚未完成的事务已修改的脏数据页落盘(STEAL)。Fuzzy Checkpoint:不用支持Fuzzy Checkpoint,也就是说在检查点是把所有脏页都flush(落

2020-09-01 23:12:35 580

原创 Apache Flink: 在同一个引擎做流式和批处理

参考:Apache Flinkó: Stream and Batch Processing in a Single Engine为什么要读这篇论文?影响很大,google显示被引用次数881(截止日期:2020-08-07)阿里巴巴以9000万美元收购了开发它的公司。1流式处理已经不再是仅限于经典的aggregate和joins,而是进化成通用的大规模事件驱动应用。批处理为什么不够?批处理有高延迟。不能实时地做出响应。批处理没有显式的支持时间的概念。批处理可以被认为是流处理的一个特例

2020-08-07 14:23:15 813

原创 数据库恢复 (ARIES)

数据库恢复 (ARIES)目标:数据库运行一半宕机了,需要恢复什么呢?需要把已经提交的事务(如果没有落盘)重做,需要把未提交的事务回滚(如果已经部分落盘)。步骤:ARIES的想法是:先把内存里的状态恢复到数据库宕机前的样子。内存的状态包括:执行一半的事务,脏页的内容(脏页就是内存中已经修改还未落盘的)。ARIES算法维护两个数据结构来跟踪记录执行中的事务和脏页信息:Transaction Table和Dirty Page Table。这两个数据结构要先恢复,我们才能恢复脏页的数据。所以ARIES分成

2020-08-05 09:57:12 1720

原创 6.824 2020 Lecture 16: Scaling Memcache at Facebook

参见:https://pdos.csail.mit.edu/6.824/notes/l-memcached.txt目录网站架构目标memcached集群不是所有的键值对都是平等的mcrouter竞争条件网站架构FE 前端web服务器(无状态的,所以很简单)cache 中间memcachedDB 数据库 (西海岸是主数据库,数据只有一份,没有replication。后来增加了东海岸机房,作为从数据库。所有的写都走主数据库。)《Scaling Memcache at Facebook》主要讲的就是中

2020-07-28 07:43:30 273

原创 6.824 Amazon Aurora云数据库

课程讲义:https://pdos.csail.mit.edu/6.824/notes/l-aurora.txtFAQ:https://pdos.csail.mit.edu/6.824/papers/aurora-faq.txtAmazon Aurora一、名词解释AWS的概念:名词解释EC2通用虚拟机。很适合运行网页服务器。不太适合在上面运行数据库——不容易scale、不容错。S3大容量存储器。可以用来做数据库的定期备份用。EBS不是EC2上本机的磁盘,但是

2020-07-25 13:33:17 335

原创 6.824 2020 Lecture 13: Spanner

6.824 2020 Lecture 13: Spanner为什么写事务的读锁不用replicate,而写锁需要replicate?读锁不阻止其他人读,只是阻止改。因为只有leader自己可以改,follower不能改,所以不用replicate,leader管好自己就行了。写锁是阻止读和写。因为follower处也是可以读的。你要开始改数据了,不希望别人读到中间结果,就要加写锁。不只是禁止从leader读,同时也禁止follower读,所以写锁必须replicate。这里以收到PREPARE的时

2020-07-24 22:00:07 223

原创 6.824 2020 Lecture 9: Chain Replication, CRAQ

参考:https://pdos.csail.mit.edu/6.824/notes/l-craq.txt6.824 2020 Lecture 9: 链式复制,CRAQ一、比较防脑裂立刻容错读速度Raft✔✔慢CRAQ××快立刻容错指的是少数机器掉线并不需要整个系统停下来等。余下的机器仍可立刻正常服务。二、链式复制一组服务器排成一条线,A(头部) -> B -> … -> H(尾部)。客户端要写,是在链的头部写,它会沿着一级一级传下

2020-07-19 20:12:05 171

原创 6.824(2020年) Lab1 MapReduce

目录6.824(2020年) Lab1 MapReduceRPC处理worker崩溃的情况Master的状态难点吐槽参考6.824(2020年) Lab1 MapReduce2018年只要写worker的doMap,doReduce以及master分配任务的schedule,共3个函数。2020年和2018年的相比,难度增加了一点。2020年的Lab1需要我们自己定义RPC。RPCGo语言的RPC都是2个参数,Args是客户端所发请求的参数,Reply是服务器执行完rpc的回复。这个Lab只要一个

2020-07-04 13:02:43 634 8

原创 奇异值分解简要笔记

对称矩阵正交对角化对称矩阵有非常好的性质——可以正交对角化。就是说对称矩阵A可以用特征值和特征向量分解成A=PDPTA=PDP^TA=PDPT的形式。其中D是对角矩阵,对角线上是A的特征值。P的列向量是A的标准正交基。这个形式很好,P是正交矩阵,对应是正交变换。正交变换保留了内积,所以也就保留了角度和距离。这在分类和聚类里面都是很重要的,因为衡量两个向量相似度就是用角度或者距离。正交变...

2020-01-18 17:46:39 402

原创 分布式系统:FastRPC eRPC

目录数据中心的RPC可以既通用且快作者要达成什么目标?基本思路optimize for the common case关键数据结构:msgbufmsgbuf的race condition参考数据中心的RPC可以既通用且快这篇是2019年NSDI会议的最佳论文[1]。看到6.824的2020年课程也即将讲这篇文章,安排在明年4月17日。这里先自己试着读一下。作者要达成什么目标?不用特殊的硬...

2019-12-18 23:53:45 1921

原创 分布式系统:参数服务器

参数服务器问题大规模的机器学习。训练数据的规模可以从1TB到1PB。模型的参数极多,可以从10910^9109到101210^{12}1012个。架构训练数据分区,分散到不同的worker上训练。每个worker只需要用到一小部分参数——由它分配到训练数据决定。worker从参数服务器pull需要的参数集合。训练完,worker将对参数的更新push到参数服务器。...

2019-10-20 15:53:10 1245

原创 分布式系统:Naiad

Naiad: A Timely Dataflow System问题见参考Write down the timestamp changes that the records experience as they flow through the graph, e.g., (a, 2): at A, t = (1, []); at B, t = … You may omit vertices...

2019-10-19 11:08:06 579

原创 分布式系统:Spark

分布式系统:Spark作者的想达成什么?在内存的,故障容忍的,集群计算作者发明了什么技术方法?Resilient Distributed Dataset (RDD)特点:API够通用。可以用它实现PageRank,K-means聚类,逻辑回归等算法。可以实现交互式的数据挖掘。特点:粗粒度的变换。(如:map, filter, join)作者完成得如何?速度快:交...

2019-10-14 07:39:43 259

原创 分布式系统:ZooKeeper 基本用例

分布式系统:ZooKeeper 用例“慢”锁用一个empheral znode,比如叫 /app/lock加锁:create一个empheral节点释放锁:delete节点等锁:用getDate加watchExample usage 1: slow lock acquire lock: retry: r = create("app/lock", "", emph...

2019-10-13 06:13:00 231

原创 分布式系统:FaRM

分布式系统:FaRM新概念RDMARDMA:remote DMA,远程内存直接访问。硬件支持:需要网卡的特殊支持可以远程读/写另一台机器上的内存。目的:节约CPU资源。应用程序直接与网卡交互,所以绕过本机的OS内核(不用TCP/IP协议栈)。在对方机器上,网卡直接读/写内存,不需要对方CPU的参与。写操作成功能收到对方网卡硬件发来的ACK(确认)。也可以用来实现类似RPC的效果。发...

2019-10-11 22:47:24 1443

原创 分布式系统:Lec 10 分布式事务

分布式事务两种并发事务控制悲观主义的。先上锁,然后用。冲突意味着有人要等待。乐观主义的。先用,不上锁。Commit() 时检查读/写是否可序列化(serializable)。有冲突就要中止(abort)、重试。没有冲突的情况下,比加锁的方案更快。叫做:Optimistic Concurrency Control(乐观并发控制)参见https://pdos.csail...

2019-10-07 19:17:02 211

原创 分布式系统 Zookeeper

分布式系统 ZookeeperAPI的特色watches, sessions, atomic znode creation老师举例多个master节点如何决定哪个为主。如果用Lab 3的KVserver不好实现。用zookeeper容易得多。atomic znode creation,保证只有1个节点能抢到。从而决定了它成为primary。watches,能通知slaves节点。...

2019-10-06 11:23:48 180

原创 分布式系统 Lab3B KVRaft snapshot

发送InstallSnapshot RPC的时机?extened Raft paper第12页左下角:when the leader has already discarded the next log that it needs to send to a follower. 所以是在本来要发送AppendEntries RPC时,却发现nextIndex[server]已经进snapshot...

2019-10-05 04:44:16 460

原创 分布式系统 Spinnaker

分布式系统 Spinnaker什么是时间线一致性?所有replica都按照同一个顺序执行写操作。读操作可能会读到过时的值。怎么做到?写只能通过leader写。读可以读任何一个replica。课前问题Please read the paper’s Appendices. In Spinnaker a leader to responds to a client request af...

2019-10-01 22:13:34 282

原创 分布式系统:Raft(实验作业3A)

6.824 KVRaft Lab 3A实验目的用上次实现的Raft,实现一个Fault-tolerant Key/Value ServiceLab 3A不用修改任何Raft代码!要实现Clerk和Server两个部分。Clerk是提供给用户的library。用户通过它来使用我们的KV服务。它对用户隐藏了多服务器的细节——用户不用知道有几个服务器,哪个是Leader。Clerk会随机找一...

2019-09-30 22:25:02 535

原创 一微秒的差别

本来想法是这样,虽然我们并不知道 有多少goroutine在等待一个chan,我们用非阻塞的方式向chan发消息,直到不能发为止。这里却有一个潜在的race condition:就是执行完go func以后,并不能保证这个goroutine被立即运行并且阻塞在c := <-ch 处!如果所有的goroutine还未执行,就先运行到select处,那么任何消息都发不出去,因为此时还没有人...

2019-09-28 20:05:33 181

原创 分布式系统:Raft(实验作业2C)

6.824 Raft Lab2B实验做什么?实现持久化实现加速的log回溯持久化这个很简单。只要参照persist()和readPersist()的注释,编写这2个函数。内容都很简短。然后凡是程序中有修改currentTerm、votedFor、log的地方,都在其后加一句persist(),就可以了。currentTerm持久化是为了term不会变小。votedFor持久化是...

2019-09-24 01:30:53 428

原创 分布式系统:Raft(实验作业2B)

6.824 Raft Lab2B实验做什么?上回L ab 2A做的是leader election而这次的Lab 2B主要做的是log replication程序结构只增加一个go程。这个go程循环检查commitIndex是否大于lastApplied。也就是说,检查有没有新近被commit的log项。如果有,就lastApplied++,然后向applyCh发送ApplyMsg消息。...

2019-09-23 16:45:18 698

原创 分布式系统:Raft(实验作业2A)

6.824 Raft Lab2AMake()函数到底要做什么?初始化rf。只要照着论文的Figure2左上角State那些赋值就行。启动一些背景go程(background goroutines)。这个实验中只需要2个背景go程:1个处理选举超时,1个处理心跳超时。两个都让它永远不停地运行。(即使我现在不是Leader,也可以运行心跳go程,只要超时的时候判断一下当前state就行了。)...

2019-09-18 15:14:58 660 1

原创 分布式系统:raft

分布式系统Raft解释nextIndex[]leader要发送给follower的下一条log entry(各follower不同)follower与leader一致的时候只发最新一条log有不一致的时候,nextIndex要减,一次发多条log。把不一致的部分都修正过来。matchIndex[]已知follower上,从0开始有多少条连续的log entry与leader一致...

2019-09-14 03:50:56 459

原创 分布式系统:Primary Backup - 故障容忍的虚拟机

Examples of divergence?They all sound like “if primary fails, clients will see inconsistent story from backup.”Lock server grants lock to client C1, rejects later request from C2.Primary and back...

2019-09-12 15:36:39 637

原创 分布式系统:GFS

为什么要读GFS的论文?MapReduce用的文件系统。6.824的很多主题在本文中出现实现细节——从应用程序(校验、去重)到网络传输(就近线性接力传输)的各种细节故障容忍性能——规模化(scale)一致性——本文是对目录树提供强一致性,对文件内容提供弱一致性。trade-off:拿一致性换取简单和高性能。以及一些设计上的选择。影响深远很多其他系统用GFS (e.g.,...

2019-09-10 09:27:23 387 1

原创 分布式系统:RPC

RPC可能会遇到什么故障?包丢失、断网、服务器太慢、服务器崩溃(crash)客户端没有收到回复,就可以认为是出错了但是它无法区分到底服务器执行了命令没有。可能服务器没有见到请求可能服务器没有执行请求就崩溃了可能服务器执行完请求,还没有来得及发回复就崩溃了。最简单的处理办法是: “best effort”(尽最大努利)Call() 等待答复,等一段时间如果超时...

2019-09-08 16:58:04 389

原创 分布式系统 MapReduce

MapReduce一、作者想达成什么目标?让没有并行和分布式经验的程序员也可以利用大型分布式系统的资源。隐藏掉那些关于并行化、数据分发、负载均衡、容错(fault-tolerance)的混乱而棘手的细节(messy details)。二、作者发明了什么技术方法?一种编程模型和它的实现。用户只要写一个map函数,和一个reduce函数。MapReduce的概要输入被分成M个文...

2019-09-05 16:29:15 265

原创 xv6的sleep和wakeup

xv6的睡觉锁,用的时候都是acquire和release包起来,保证互斥。中间可以sleep,睡觉过程中,放弃锁,别人可以进入临界区。醒来又要获得锁(因为又重新进入临界区了)。wakeup和Semaphore的signal()操作不一样,不会累计唤醒次数。如果此刻没有进程在等这个chan,就什么也不做。综上,实际上sleep-lock在这里,相当于实现了一个Brinch Hansen(197...

2019-08-26 15:39:26 1716

原创 Python异步库里面的队列

了解一下asyncio.Queue接口:构造函数中可以指定队列的maxsize供消费者使用的:获取任务get()、通知任务做完了task_done()供生产者使用的:发布任务put()、等待所有任务完成join()生产者消费者的问题的信号量解法任何一本大学《操作系统》教材都会有这个经典解法。用1个mutex,和2个semaphore来解多个生产者/多个消费者问题。我从 wikip...

2019-08-26 14:30:09 411

原创 python异步函数中调用同步函数

异步函数调用同步函数普通函数里面不能await,只有async函数才能await。也就是说,同步函数执行的时候会阻塞所有协程。直接调用如果同步函数执行的时间很短。就直接调用。在执行器里跑如果同步函数执行的时间很长,就要让它在另外一个线程跑。以下代码是让同步函数在默认的线程池里跑。这是在另外一个线程,不会卡住与我们同一个事件循环的协程们。 result = await loop...

2019-08-24 08:44:13 3788

原创 宏内核与微内核

宏内核与微内核宏内核(monolithic)是传统的内核,UNIX和Linux都采用这样的结构。微内核是源自学术界的创新。他们的区别有很多方面,我想从进程的角度来说一下。宏内核我们都知道进程至少包括三个段,正文(程序),堆栈,数据。当进程调用系统调用的时候,进程就进入内核态,效果相当于调用了操作系统内核的一个函数,执行完返回。但是内核态有自己的正文、堆栈、数据——其中正文(内核程序)和数据...

2019-08-23 11:26:07 397

原创 进程以下的那些事儿

进程以下的那些事儿硬件驱动程序的最底层硬件驱动程序的最底层是什么?是直接操作硬件的部分。直接与硬件交互的方法有2大类:CPU主动发起,读写硬件的寄存器。这里面又分为2种,PIO和MMIO。PIO的方式在x86汇编语言里,就是用io和out汇编语句,读写硬件控制器上的寄存器。MMIO就是硬件会把自己的寄存器映射到主机的内存空间。也就是说,在程序员看来,访问MMIO寄存器就好像访问普通内...

2019-08-23 06:39:45 180

原创 研究知识追踪/学生模型的一些学校和人物

宾夕法尼亚大学 Dr. Ryan Baker Edx上《Big Data in Education》课程的老师。 CMU毕业。他的两位导师:Kenneth R. Koedinger是PFA论文第三作者,Albert Corbett是KBT的第一作者。伍斯特理工学院(Worcester Polytechnic Institute) Neil T. Heffernan教授 是常见数据集A...

2018-08-01 15:07:49 3697 8

原创 使用免费GPU深度学习平台colab玩转Kaggle比赛

Google免费GPU深度学习平台colab使用记录Colab的使用界面类似jupyter notebook。运行虚拟机(VM)上。虚拟机配置K80 GPU,12G内存,39G硬盘空间。缺点是虚拟机最多只能运行12小时,时间一到就会清空虚拟机上所有数据。这包括我们安装的软件,包括我们下载的数据,存放的计算结果。运行bash命令colab不只可以执行Python。只要在代码行前面加! (...

2018-07-28 15:47:11 4142

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除