The document discusses hardware-assisted video transcoding at Dailymotion. It summarizes the legacy software-only transcoding farm and introduces a new GPU-accelerated solution using Intel Media SDK and Nvidia cards. Performance tests showed the new solution was up to 12x faster for single transcodes and had much lower power consumption. Quality was similar or better with look-ahead enabled. The new farm has been deployed successfully.
35. 2
RFP: Request For Proposal
An RFP is a set of specifications that describe the
sought-after solution, and evaluation criteria that
disclose how proposals will be graded.
(Margaret Rouse - https://goo.gl/uVHKqM)
36. 3
Traffic
90+ Gbps Internet Traffic
1+ Tbps inter-DCs capacity
Servers
26 000+ Servers
28 Pb Storage
Growth in 2017
+2 Data centers
+6 500 Servers
+4 x 100G inter-DCs links
Power
8+ Mega Watt
(+/- 7000 homes for 1 year)
Data Centers World Wide
Criteo Global Footprint 2017-Q4
38. 5
Q4 2017Q3 2017
RFP Process
RFP Launch
February 7th
Vendor Award
June 9th
RFP Answers
March 1st
Contract review
Project
Launch
BUILD Phase
Data Center
Infrastructure
Ready
Data Center
Commissioning
Hardware Procurement
Cabling & Setup
IP Transit & Leased Line
Q&A
February March April
Shortlist
Selection
April 3rd
May
First Billing
Offers
Review
Vendors Negotiations
PO release &
Contract signed
August September
Site visit
Q2 2017
Hardware
Setup+
SRE
validation
July
Q1 2017
October November
4 months 6 months
June December
ETA for PO
approval
Timeline
40. 7
RFP: Documentation Package
Master document with background and planning
Appendix 1 : Technical Requirement and Answering Grid
Mandatory Requirements
All questions will be shared on this file
Administrative documentation
59. 1.2 - Stack Technique
2
Datacenters
600
serveurs physiques
(plus de 1000 avec les virtuels)
12 Gbits/s
de débit sortant
6 To
de BDD
8
300M
d’images
15k req/s
sur leboncoin.fr
60. 1.2 - Stack Technique
2
Datacenters
600
serveurs physiques
(plus de 1000 avec les virtuels)
12 Gbits/s
de débit sortant
6 To
de BDD
9
300M
d’images
15k req/s
sur leboncoin.fr
63. 2.1 - Situation initiale
● 1 - Operator
○ find a free IP (Welcome ping !)
● 3 - Foreman
○ Go in Foreman and select a node
○ Get the @MAC
○ Create the node + put in build mode
12
● 4 - Puppet
○ Reserve @Mac / DNS name in DHCP
○ Commit + push
○ Run the agent on every DHCP nodes
● 2 - Puppet
○ Reserve IP / DNS name in DNS
○ Commit + push
○ Run the agent on every DHCP nodes
64. 2.1 - Situation initiale
● 5 - Foreman
○ Reboot the node via BMC plugin
● 7 - Operator
○ Follows with Java console
13
● 6 - Node installs
○ Boot on network (PXE)
○ DHCP redirects to TFTP
○ TFTP serves the custom PXE config
○ Pressed is rendered by Foreman
65. 2.1 - Situation initiale
● 5 - Foreman
○ Reboot the node via BMC plugin
● 7 - Operator
○ Follows with Java console
14
● 6 - Node installs
○ Boot on network (PXE)
○ DHCP redirects to TFTP
○ TFTP serves the custom PXE config
○ Pressed is rendered by Foreman
6 manual steps
Errors prone
Human conflicts
Time consuming
67. 2.2 - Problématique
● Simplifier le provisioning bare metal
○ Provisioning / installation non-supervisée
○ 1 manual step
16
68. 2.3 - Essai 1 - Foreman + SmartProxies
Constat: Sous utilisation de Foreman.
Solutions: Smart proxy pour automatiser :
- IPAM + DHCP
- DNS
17
69. ● Foreman Smart-proxy
○ Not supported
2.3 - Essai 1 - Foreman + SmartProxies
● We
○ 1 big zone file
● Foreman Smart-proxy
○ Dynamic updates = nsupdate
○ Binary journal file + serial conflicts
18
● We
○ Do nics bonding
○ Need to register n@Macs <> 1 IP
Pain points: DNS
Pain points: DHCP
70. 2.3 - Essai 1 - Foreman + SmartProxies
● We
○ Do not master Ruby
○ Are not “a Tech company”
○ Are not that big
● Foreman & Smart-proxy
○ Very complex code base
○ Very complex UI
○ Generic and have a lots (too many) of
features
19
Pain points: Foreman
74. Problématique 2
● Automatiser la gestion du cycle de vie des
machines physiques
○ Discovery/intake
○ Provisioning / installation non-supervisée
○ Maintenance, decommission
23
75. Collins
● Project open source https://github.com/tumblr/collins
● Machine à état imposée
● Système de hook / callback arbitraire sur les transitions d’état
● Metadata key / value arbitraires associées à chaque assets
● Web UI + API http + firehose
24
88. 4.6 - Tooling
37
$ collins-shell
INFO - ENV Variable COLLINS_CONFIG=/home/xkrantz/Sources/github.schibsted.io/leboncoin/acdc/conf/collins.yaml
Tasks:
collins-shell asset <command> # Asset related commands
collins-shell asset_type <command> # Asset Type related commands
collins-shell console # drop into the interactive collins shell
collins-shell help [TASK] # Describe available tasks or one specific task
collins-shell ip_address <command> # IP address related commands
collins-shell ipmi <command> # IPMI related commands
collins-shell latest # check if there is a newer version of collins-shell
collins-shell log MESSAGE # log a message on an asset
collins-shell logs TAG # fetch logs for an asset specified by its tag. Use "all" for a...
collins-shell power ACTION --reason=REASON --tag=TAG # perform power action (off, on, rebootSoft, rebootHard, etc) o...
collins-shell power_status # check power status on an asset
collins-shell provision <command> # Provisioning related commands
collins-shell search_logs QUERY # search for asset logs
collins-shell state <command> # State management related commands - use with care
collins-shell tag <command> # Tag related commands
collins-shell version # current version of collins-shell