SlideShare a Scribd company logo
1 of 73
Download to read offline
How we scaled GitLab
for a 30k-employee company
Minqi Pan
Hello, I’m Minqi Pan
github.com/pmq20
twitter
@psvr
What’s GitLab?
GitLab
a git-box

installed on-premises
GitLab
HTTP
80/443
SSH
22
GitLab
HTTP
80/443
SSH
22
GitLab
RedisMySQL File
System
What’s inside?
GitLab
NGINX OpenSSH Server
Unicorn gitlab-shellGitlab Workhorse
git
gitlab_gitrails sidekiq rugged
libgit2
Works great
for small teams
However
to make it easy to do business anywhere
Let’s scale it!
GitLab
HTTP
80/443
SSH
22
HTTP
80/443
SSH
22
unicorn unicorn
unicorn …
HTTP
80/443
SSH
22
unicorn unicorn
unicorn …
nginx ?
HTTP
80/443
SSH
22
unicorn unicorn
unicorn …
nginx
ssh2http
https://github.com/pmq20/ssh2http
unicorn unicorn
unicorn …
LVS (IPVS)
HTTP
80/443
SSH
22
Linux Virtual Server

(IP Virtual Server)
• transport-layer load balancing inside kernel
• layer-4 switching, unlike nginx (layer-7)
• can: IP weighting, IP blocking, health checking
• can’t: HTTP 200 Health Checking, URL rewriting
Complications
• SSH Host Key Synchronisation: do it once
• SSH Client Key Synchronisation: do it every time
• synchronised via redis pub-sub
Does it scale
in the backend?
IV. Backing services
Treat backing services as attached resources
🤔
Redis
🤔
MySQL
🤔
File System
GitLab
* git repositories
* user generated
attachments / avatars
GitLab Geo
• introduced in GitLab 8.5 EE
• 1 Master N Slave Replication
• achieves A-P in C-A-P theorem
• no disaster recovery
• no sharing
HTTP
80/443
SSH
22
nginx
ssh2http
routing via key
namespace/repo_name
GitLab shard
FS shard
GitLab shard
FS shard
GitLab shard
FS shard
GitLab Sharding
• Introduces Sidekiq sharing as well
• Introduces many changes to the application
layer as well

- need to have super user authentication

- need to eliminate every page with requests
across shards (e.g. admin page of repo sizes)
• Tedious changes on the application level.
How to deal with FS?
• 🤔 Hardware Network-Attached Storage?
• 🤔 Software Network-Attached Storage?
• 🤔 Remote Procedure Calls to FS shards?
• 🤔 Kill it?
• Hard-NAS: Alibaba has non-IOE policies.
• Soft-NAS: Alibaba does not have it yet.
• RPC: GitRPC? Good. GitHub does that.
• Kill FS: Use the cloud. Try something new!
by “cloud” we mean…
• Amazon S3: Amazon Simple Storage Service
• Alibaba OSS: Alibaba Object Storage Service
libgit2 git grit
• used in wiki’s
• via gollum-lib
• via gollum-grit_adapter
• eliminate-able via

gollum-rugged_adapter
gitlab-rails
gitlab-rails
libgit2 git
• via gitlab_git
• via rugged
• backend

replace-able
• via gitlab-shell
• via gitlab-workhorse
• via popen
• backend

hard-to-replace (FS)
grit
Basic Idea
gitlab-workhorsegitlab-rails gitlab-shell
git
libgit2
Cloud Based Backend




grit
Cloud Based Backend
odb’s refdb
• stored via OSS
• locked via redis
hi-priority
lo-priority
loose OSS store
packed OSS store
OSS refdb (read)
OSS refdb (write)
loose OSS store (write)
loose OSS store (read)
packed OSS store (write)
packed OSS store (read)
via HTTP “Range” header
packed OSS store (read)
Example
• First byte of the name is 0x9f
• IDX[8 + (0x9f - 1) * 4] == 0x0403 == 1027
• IDX[8 + 0x9f * 4] == 0x0403 == 1029
• Object No. 1027 ~ 1029
Read 9fcf811e00fa469688943a9152c16d4ee90fb9a9
Example
• Binary search 1027 ~ 1029
• Found at 8 + 4 * 256 + 1027 * 20 == 21572
• Skip the rest total_num*(20+4) == 1628*24
Read 9fcf811e00fa469688943a9152c16d4ee90fb9a9
Example
• IDX[8 + 4 * 256 + 1628*24 + 4 * 1027]
Read 9fcf811e00fa469688943a9152c16d4ee90fb9a9
• PACK[0x0004482D] == PACK[280621]
Example
Read 9fcf811e00fa469688943a9152c16d4ee90fb9a9
E3 11100011
1_______ => MSB 1 continue
_110____ => type == 6 == OFS_DELTA
____0011 => length == 3
3-bit type, (n-1)*7+4-bit length
Example
Read 9fcf811e00fa469688943a9152c16d4ee90fb9a9
• PACK[0x0004482D]
01 00000001
0_______ => MSB 0 break
_0000001 => length += (1 << 4)
final length == 19
Example
Read 9fcf811e00fa469688943a9152c16d4ee90fb9a9
• PACK[0x0004482D]
AA 10101010
1_______ MSB 1 continue
_0101010 base offset == 42
Example
Read 9fcf811e00fa469688943a9152c16d4ee90fb9a9
• PACK[0x0004482D]
44 01000100
0_______ MSB 0 break
_1000100 offset == ((42+1)<<7)+68
== 5572
Example
Read 9fcf811e00fa469688943a9152c16d4ee90fb9a9
offset == 5572
push 0x0004482D into stack
deal with (0x0004482D - 5572)
push (0x0004482D - 5572) into stack
…
root base
Example
SHA1 type size size-pack
offset-
pack
depth base
9fcf811e00fa469
688943a9152c16d
4ee90fb9a9
blob 19 32 280621 4
6110c89446f2281
e5db9b798a0fa02
0fad6e63e1
6110c89446f2281
e5db9b798a0fa02
0fad6e63e1
blob 52 45 275049 3
3bbeff3fc22b75c
1a26f4ab9b64449
b33002aea5
3bbeff3fc22b75c
1a26f4ab9b64449
b33002aea5
blob 2935 1263 273786 2
a39920830904665
6ecc01f7653c5d5
b8905fc16e
a39920830904665
6ecc01f7653c5d5
b8905fc16e
blob 4686 1540 272246 1
e4e56117de8b3bd
0bd899701da4712
caee27c7d6
e4e56117de8b3bd
0bd899701da4712
caee27c7d6
blob 12635 3279 115703 0 -
git → libgit2
git fetch / clone
• git upload-pack --advertise-refs

(rewritten via libgit2)
• git upload-pack

(untouched)
• git pack-objects

(rewritten via libgit2 pack builder)
git push (small data)
• git upload-pack --advertise-refs

(rewritten via libgit2)
• git upload-pack

(untouched)
• ntohl(hdr.hdr_entries) < unpack_limit
• git unpack-objects

(modified via libgit2, writing to loose OSS store)
git push (big data)
• git upload-pack --advertise-refs

(rewritten via libgit2)
• git upload-pack

(untouched)
• ntohl(hdr.hdr_entries) >= unpack_limit
• git index-pack

(modified via libgit2, writing to packed OSS store)
Naked Benchmark

(no cache)
Fixture
• Repository: gitlab-ce
• https://gitlab.com/gitlab-org/gitlab-ce.git
• More than 200k objects
• More than 100MB when packed
git push
• FS-based:

6.27s user 1.72s system 14% cpu 53.299 total
• Cloud-based:

6.13s user 1.29s system 13% cpu 54.697 total
git push (delta)
• FS-based:

0.09s user 0.07s system 5% cpu 3.059 total
• Cloud-based:

0.04s user 0.05s system 3% cpu 2.845 total
git clone
• FS-based:

6.89s user 8.99s system 33% cpu 47.096 total
• Cloud-based:

7.08s user 8.12s system 20% cpu 1:14.12 total
git fetch (delta)
• FS-based:

0.14s user 0.13s system 33% cpu 0.806 total
• Cloud-based:

0.09s user 0.10s system 1% cpu 16.019 total
GET /namespace/repo/tree/
master
• FS-based:

Executing action: show - 74.5 ms
• Cloud-based:

Executing action: show - 5877.7 ms
GET /namespace/repo/tree/
master/builds
• FS-based:

Executing action: show - 50.0 ms
• Cloud-based:

Executing action: show - 4547.0 ms
Cache
odb hamburger refdb
• cached via redishi-priority
lo-priority
loose OSS store
packed OSS store
loose FS cache
packed FS cache
loose FS cache
• cache written when

ntohl(hdr.hdr_entries) < unpack_limit

in git-unpack-objects
• when reading via loose OSS store
packed FS cache
• cache written when

ntohl(hdr.hdr_entries) >= unpack_limit

in git-index-pack
• cache written in git-pack-objects
redis refdb cache
• cache written when read and cache-miss
• cache expired when refdb got updated

e.g. git-receive-pack
Future Work
• develop libgit2 backends for AWS S3
• gitlab: favour libgit2, eliminate direct calls to git
• gitlab: add settings to choose backends
• gollum: use rugged as the default
• libgit2: improve performance, e.g. pack builder
https://github.com/pmq20

More Related Content

Viewers also liked

Enjoy privacy on Gitlab
Enjoy privacy on GitlabEnjoy privacy on Gitlab
Enjoy privacy on GitlabMaxis Kao
 
Formation autour de git et git lab
Formation autour de git et git labFormation autour de git et git lab
Formation autour de git et git labAbdelghani Azri
 
A tour on ruby and friends
A tour on ruby and friendsA tour on ruby and friends
A tour on ruby and friends旻琦 潘
 
Upgrading rails-it-is-a-good-time-to-refactor-your-code-en-upgrading-rails-it...
Upgrading rails-it-is-a-good-time-to-refactor-your-code-en-upgrading-rails-it...Upgrading rails-it-is-a-good-time-to-refactor-your-code-en-upgrading-rails-it...
Upgrading rails-it-is-a-good-time-to-refactor-your-code-en-upgrading-rails-it...旻琦 潘
 
lotus让我们写出更solid的ruby工程
lotus让我们写出更solid的ruby工程lotus让我们写出更solid的ruby工程
lotus让我们写出更solid的ruby工程旻琦 潘
 
Rails 快速上手攻略(Rails Getting Started)
Rails 快速上手攻略(Rails Getting Started)Rails 快速上手攻略(Rails Getting Started)
Rails 快速上手攻略(Rails Getting Started)旻琦 潘
 
Tracing a Memory-leak in a Long Running Eventmachine Application
Tracing a Memory-leak in a Long Running Eventmachine ApplicationTracing a Memory-leak in a Long Running Eventmachine Application
Tracing a Memory-leak in a Long Running Eventmachine Application旻琦 潘
 
FOSDEM 2017: GitLab CI
FOSDEM 2017:  GitLab CIFOSDEM 2017:  GitLab CI
FOSDEM 2017: GitLab CIOlinData
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow soloviniciusban
 
Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to GitlabJulien Pivotto
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CIColCh
 
Why you can't ignore GitLab
Why you can't ignore GitLabWhy you can't ignore GitLab
Why you can't ignore GitLabPivorak MeetUp
 

Viewers also liked (18)

Ch16 copy
Ch16   copyCh16   copy
Ch16 copy
 
C++ 11
C++ 11C++ 11
C++ 11
 
Growing an Open Company
Growing an Open CompanyGrowing an Open Company
Growing an Open Company
 
Up GitLab Presentation 2015
Up GitLab Presentation 2015Up GitLab Presentation 2015
Up GitLab Presentation 2015
 
GitLab Product Update, January 2017
GitLab Product Update, January 2017GitLab Product Update, January 2017
GitLab Product Update, January 2017
 
Enjoy privacy on Gitlab
Enjoy privacy on GitlabEnjoy privacy on Gitlab
Enjoy privacy on Gitlab
 
Git collaboration
Git collaborationGit collaboration
Git collaboration
 
Formation autour de git et git lab
Formation autour de git et git labFormation autour de git et git lab
Formation autour de git et git lab
 
A tour on ruby and friends
A tour on ruby and friendsA tour on ruby and friends
A tour on ruby and friends
 
Upgrading rails-it-is-a-good-time-to-refactor-your-code-en-upgrading-rails-it...
Upgrading rails-it-is-a-good-time-to-refactor-your-code-en-upgrading-rails-it...Upgrading rails-it-is-a-good-time-to-refactor-your-code-en-upgrading-rails-it...
Upgrading rails-it-is-a-good-time-to-refactor-your-code-en-upgrading-rails-it...
 
lotus让我们写出更solid的ruby工程
lotus让我们写出更solid的ruby工程lotus让我们写出更solid的ruby工程
lotus让我们写出更solid的ruby工程
 
Rails 快速上手攻略(Rails Getting Started)
Rails 快速上手攻略(Rails Getting Started)Rails 快速上手攻略(Rails Getting Started)
Rails 快速上手攻略(Rails Getting Started)
 
Tracing a Memory-leak in a Long Running Eventmachine Application
Tracing a Memory-leak in a Long Running Eventmachine ApplicationTracing a Memory-leak in a Long Running Eventmachine Application
Tracing a Memory-leak in a Long Running Eventmachine Application
 
FOSDEM 2017: GitLab CI
FOSDEM 2017:  GitLab CIFOSDEM 2017:  GitLab CI
FOSDEM 2017: GitLab CI
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow solo
 
Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CI
 
Why you can't ignore GitLab
Why you can't ignore GitLabWhy you can't ignore GitLab
Why you can't ignore GitLab
 

Similar to How we scaled git lab for a 30k employee company

Scaling Git - Stefan Saasen
Scaling Git - Stefan SaasenScaling Git - Stefan Saasen
Scaling Git - Stefan SaasenAtlassian
 
Six3 Getting Git
Six3 Getting GitSix3 Getting Git
Six3 Getting GitDaniel Cox
 
Gitting It Under (Version) Control
Gitting It Under (Version) ControlGitting It Under (Version) Control
Gitting It Under (Version) Controlmobiledevnj
 
Git Obstacle Course: Stop BASHing your head and break down the basics
Git Obstacle Course: Stop BASHing your head and break down the basicsGit Obstacle Course: Stop BASHing your head and break down the basics
Git Obstacle Course: Stop BASHing your head and break down the basicsChris Bohatka
 
Git Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a BossGit Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a Bosstmacwilliam
 
Learn Git - For Beginners and Intermediate levels
Learn Git - For Beginners and Intermediate levelsLearn Git - For Beginners and Intermediate levels
Learn Git - For Beginners and Intermediate levelsGorav Singal
 
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHubThe Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHubBigBlueHat
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notesglen_a_smith
 
Introduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionIntroduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionAnwarul Islam
 
Tracking Huge Files with Git LFS
Tracking Huge Files with Git LFSTracking Huge Files with Git LFS
Tracking Huge Files with Git LFSAtlassian
 
Git isthenewsexy
Git isthenewsexyGit isthenewsexy
Git isthenewsexyAilsa126
 
Git Tutorial I
Git Tutorial IGit Tutorial I
Git Tutorial IJim Yeh
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github Max Claus Nunes
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitJohn Ombagi
 
How To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneHow To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneVEXXHOST Private Cloud
 

Similar to How we scaled git lab for a 30k employee company (20)

Scaling Git - Stefan Saasen
Scaling Git - Stefan SaasenScaling Git - Stefan Saasen
Scaling Git - Stefan Saasen
 
Six3 Getting Git
Six3 Getting GitSix3 Getting Git
Six3 Getting Git
 
Gitting It Under (Version) Control
Gitting It Under (Version) ControlGitting It Under (Version) Control
Gitting It Under (Version) Control
 
Git Obstacle Course: Stop BASHing your head and break down the basics
Git Obstacle Course: Stop BASHing your head and break down the basicsGit Obstacle Course: Stop BASHing your head and break down the basics
Git Obstacle Course: Stop BASHing your head and break down the basics
 
Git! Why? How?
Git! Why? How?Git! Why? How?
Git! Why? How?
 
Basic git
Basic gitBasic git
Basic git
 
Git Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a BossGit Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a Boss
 
Learn Git - For Beginners and Intermediate levels
Learn Git - For Beginners and Intermediate levelsLearn Git - For Beginners and Intermediate levels
Learn Git - For Beginners and Intermediate levels
 
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHubThe Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
Git basics
Git basicsGit basics
Git basics
 
Introduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionIntroduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training Session
 
Git Heaven with Wakanda
Git Heaven with WakandaGit Heaven with Wakanda
Git Heaven with Wakanda
 
Tracking Huge Files with Git LFS
Tracking Huge Files with Git LFSTracking Huge Files with Git LFS
Tracking Huge Files with Git LFS
 
Git isthenewsexy
Git isthenewsexyGit isthenewsexy
Git isthenewsexy
 
Git Tutorial I
Git Tutorial IGit Tutorial I
Git Tutorial I
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
 
Git Tech Talk
Git  Tech TalkGit  Tech Talk
Git Tech Talk
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
How To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneHow To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub Clone
 

Recently uploaded

CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfAsst.prof M.Gokilavani
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadaditya806802
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 
Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxVelmuruganTECE
 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxsiddharthjain2303
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...VICTOR MAESTRE RAMIREZ
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort servicejennyeacort
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substationstephanwindworld
 
Virtual memory management in Operating System
Virtual memory management in Operating SystemVirtual memory management in Operating System
Virtual memory management in Operating SystemRashmi Bhat
 
Correctly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleCorrectly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleAlluxio, Inc.
 
National Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdfNational Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdfRajuKanojiya4
 
Arduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptArduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptSAURABHKUMAR892774
 
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTIONTHE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTIONjhunlian
 
Input Output Management in Operating System
Input Output Management in Operating SystemInput Output Management in Operating System
Input Output Management in Operating SystemRashmi Bhat
 
Mine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxMine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxRomil Mishra
 
Industrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptIndustrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptNarmatha D
 
Crushers to screens in aggregate production
Crushers to screens in aggregate productionCrushers to screens in aggregate production
Crushers to screens in aggregate productionChinnuNinan
 

Recently uploaded (20)

CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasad
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 
POWER SYSTEMS-1 Complete notes examples
POWER SYSTEMS-1 Complete notes  examplesPOWER SYSTEMS-1 Complete notes  examples
POWER SYSTEMS-1 Complete notes examples
 
Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptx
 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptx
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
 
Designing pile caps according to ACI 318-19.pptx
Designing pile caps according to ACI 318-19.pptxDesigning pile caps according to ACI 318-19.pptx
Designing pile caps according to ACI 318-19.pptx
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substation
 
Virtual memory management in Operating System
Virtual memory management in Operating SystemVirtual memory management in Operating System
Virtual memory management in Operating System
 
Correctly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleCorrectly Loading Incremental Data at Scale
Correctly Loading Incremental Data at Scale
 
National Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdfNational Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdf
 
Arduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptArduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.ppt
 
young call girls in Green Park🔝 9953056974 🔝 escort Service
young call girls in Green Park🔝 9953056974 🔝 escort Serviceyoung call girls in Green Park🔝 9953056974 🔝 escort Service
young call girls in Green Park🔝 9953056974 🔝 escort Service
 
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTIONTHE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
 
Input Output Management in Operating System
Input Output Management in Operating SystemInput Output Management in Operating System
Input Output Management in Operating System
 
Mine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxMine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptx
 
Industrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptIndustrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.ppt
 
Crushers to screens in aggregate production
Crushers to screens in aggregate productionCrushers to screens in aggregate production
Crushers to screens in aggregate production
 

How we scaled git lab for a 30k employee company