{"id":27326769,"url":"https://github.com/parasj/papers","last_synced_at":"2026-02-16T02:02:03.820Z","repository":{"id":144620259,"uuid":"163206401","full_name":"parasj/papers","owner":"parasj","description":"Summaries of readings in operating systems, networking and machine learning","archived":false,"fork":false,"pushed_at":"2019-02-04T01:02:34.000Z","size":229,"stargazers_count":22,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T12:04:34.723Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parasj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security/README.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-12-26T18:22:15.000Z","updated_at":"2023-08-04T13:28:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"efb9267a-ffa2-4582-949f-71482a802ac2","html_url":"https://github.com/parasj/papers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/parasj/papers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parasj%2Fpapers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parasj%2Fpapers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parasj%2Fpapers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parasj%2Fpapers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parasj","download_url":"https://codeload.github.com/parasj/papers/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parasj%2Fpapers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000786,"owners_count":26082851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-12T11:59:31.050Z","updated_at":"2025-10-08T22:35:00.335Z","avatar_url":"https://github.com/parasj.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Systems\n## Key systems design principles\n* Isolate the common case [Lampson 84]\n  * *Prioritize a single use case*\n  * Identify read versus write workloads and optimize accordingly\n  * Identify need for distributed computing versus single node (LRPC)\necure\n* Think about consistency requirements carefully. Relaxing consistency can provide increased availability (Coda) or better performance\n* Indirection can simplify design and decouple evolution of upper and lower layers of a stack\n  * Examples: IP, OS, VMM, LLVM IR, SQL\n* End-to-end arguments\n  * Carefully think about implementing functionality at a lower layer if it must be implemented at a higher layer as well\n  * Add it at a lower level if performance improves and does not compromise performance for other workloads that don't need it\n  * RISC, IP, exokernels\n* Specialization\n  * Hold other dimensions of design constant while improving single attribute\n  * Leverage semantics for one key workload (common case)\n  * SQL focuses on structured data\n  * CRDT focuses on a few commutative operations\n  * Google FS optimizes append-only workloads\n* Simplicity (Occam's)\n  * easier to add complexity later, but hard to remove it\n  * allows for fast iteration\n* Get correctness first and then optimize later\n* Why do systems fail (Stonebraker)?\n * Excessive complexity\n * Unecessary extensions and functionality\n * No compelling use case that is widely accepted\n\n## Systems tradeoffs\n* Functionality vs performance vs `x` \n  * `x` can be usability, consistency, safety, security\n* Performance vs portability\n* Latency vs bandwidth vs fault-tolerance requirements [Clark 95]\n* Fine-grained vs coarse-grained\n  * coarse-grained provides performance but is more complex and less s\n* Hardware vs software support\n* Interactive vs batch systems\n\n## Ballpark latency numbers (from Jeff Dean)\n```\nL1 cache reference ......................... 0.5 ns\nBranch mispredict ............................ 5 ns\nL2 cache reference ........................... 7 ns\nMutex lock/unlock ........................... 25 ns\nMain memory reference ...................... 100 ns             \nCompress 1K bytes with Zippy ............. 3,000 ns  =   3 µs\nSend 2K bytes over 1 Gbps network ....... 20,000 ns  =  20 µs\nSSD random read ........................ 150,000 ns  = 150 µs\nRead 1 MB sequentially from memory ..... 250,000 ns  = 250 µs\nRound trip within same datacenter ...... 500,000 ns  = 0.5 ms\nRead 1 MB sequentially from SSD* ..... 1,000,000 ns  =   1 ms\nDisk seek ........................... 10,000,000 ns  =  10 ms\nRead 1 MB sequentially from disk .... 20,000,000 ns  =  20 ms\nSend packet CA-\u003eNetherlands-\u003eCA .... 150,000,000 ns  = 150 ms\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparasj%2Fpapers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparasj%2Fpapers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparasj%2Fpapers/lists"}