- paper summaries
- lecture notes
- part of my notes is in the issues
Reading the original papers will give you better understanding of why these talents design systems in this way.
Reading the original papers will give you better understanding of why these talents design systems in this way.
metadata consistency/reliability
FFS synchronized writes => LFS solves the problem but may cause consistency issues.
opportunity/benefit => cache metadata writes, (async) update every 30s
update dependence
update sequence/order
roll back & roll forward: a new update on file cache depends on a update to disk, so it waits and undo all the updates to that portion of blocks, and make updates in order. (like a time machine on that portion of blocks) Then. roll forward to the most recent state. (the block is locked to prevent applications from seeing the rolled-back state.)
=> granularity of a pointer, keep all changes to the pointer, not the entire inode/directory pointer.
roll back to a point where no cyclic dependency exists, and do a bunch of updates together.
fsync
: all pending updates for that file must go to disk before the application to continue..
Simple and useful to the problem it solves. Randomized decisions to achieve a good performance.
Goal: proportional scheduling to the execution rate of computations. (statistically)
Tickets -> currencies. => representation.
decides: how much CPU and how long to wait.
Lock inversion. Threads waiting for the lock will donate tickets to the thread holding the lock, make it has a higher priority.
Can be used for CPU, network, memory, disk, etc. Uniformity.
A priority based scheduler, is more likey to cause block. A randomized.
Why it is not used?
Hard to express how many tickets the thread should have.
Client diagram for how RPC works
Why RPC?
How RPC works? (see the diagram)
What do we do when the types (passing as the parameters) are complex?
Procedural-based languages => object-oriented languages
how to support multiple langiages (like grpc)
Bindings => client-server bindings before communications.
Optimizations:
L4
push as much as possible to use level.
Benifits
Why is microkernele slow?
=======
MK components
Mach (OS server) for comparison
ExoKernel
Need three functionalities
memory
network
disk
want to minimize microkernel
each app has its own libOS, the OS has only the features that app needs
Micro v.s. Exo Difference?
Many cores
more cores -> more wait (RCU does not work well for more copys)
cache coherency (RCU does not solve this problem, serialization in one place)
cache line aliasing - false sharing
more contention
more idleness
GFS -> HDFS
Requirements:
User:
Kernel
RPCs are widely used in datacenters(DC)
question: really fast h/w, why is communication slow? - too MUCH overhead in the communication path.
(Linux put TCP/IP inside the OS, so communication between apps need to cross domains. => some design move tcp/ip to the user-app level, achieves ZERO-COPY, but lose protection.)
Goals
designs:
(1) Run-to-completion: - Improves data-cache locality - Remove scheduling unpredictability. Just do not stop the queues on the NICs.
(2) batching: as large as cache size, improve locality. prefetching.
protection:
cylinder groups are the tracks across cylinders. (speed across the surface is faster than seek. => the new format to organize the FS in FFS.)
Question: the difference between seek and move between tracks?
Problems & solutions:
see table here.
Notes
cylinder group => inode and data are in the same group.
superblocks (are fixed to point to inodes), inodes are not fixed now.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.