SlideShare une entreprise Scribd logo
1  sur  25
From Windows to Linux:
Converting a Distributed
Perforce Helix
Infrastructure
David Foglesong
Senior Systems Software Engineer
Tableau Software
2
About Tableau Software
Tableau Software (NYSE: DATA) helps people see and
understand data. Tableau helps anyone quickly analyze,
visualize and share information. More than 35,000 customer
accounts get rapid results with Tableau in the office and on-
the-go. And tens of thousands of people use Tableau Public to
share data in their blogs and websites. See how Tableau can
help you by downloading the trial at www.tableau.com/trial.
3
Perforce At Tableau
 Started with CVS.
 Converted to Perforce in 2007 (on Windows).
 Infrastructure has evolved over time: One server > commit
+ replicas > commit + replicas + edge servers.
 650K+ changes, 900+ users, commit = 500G DB, edge =
800G DB.
 3 main dev offices, several smaller offices.
4
Why Change?
 Tableau product change from Win-only to Win/Mac to
Win/Mac/mobile (iOS/Android).
 Run other parts of build infrastructure (Artifactory,
ReviewBoard, OpenGrok) on Linux.
 Dev management wants “best” systems = performance,
stability, scalability.
 Perforce admins prefer Linux. 
5
Before
 1x commit server
 1x RO replica (backup and reporting)
 3x fwd replica (at main dev offices)
 Proxies at smaller dev offices.
 1x edge server (for build farm) + RO replica (backup)
 Brokers in front of everything.
 All on Windows.
6
Before
7
After
 1x commit server
 2x RO replicas (backup and reporting)
 5x edge servers (3x for offices, 2x for build farm)
 5x RO replicas (backups for edge servers)
 Brokers in front of everything.
 All on Linux.
 Most in central data center.
 Proxies in dev offices.
8
After
9
Edge Servers vs. Forwarding Replicas
 Why switch offices to edge servers?
• Remote users (Palo Alto) see small lag on commands.
• Want to move most user data (db.have) off commit server – goal is to
have minimal (ideally none) connections from human users on commit
server.
 Move to cluster?
• Not at this time. Want to preserve option of moving edge server to dev
office if needed.
10
Process: Old vs. New
 Old way = checkpoint manipulation
• Either via scripts or p4migrate.
• Need to fix case inconsistencies in metadata. E.g.,
- //depot/source/foo.c#1 vs. //depot/SOURCE/bar.c#1
- User “bob” vs. user “BOB”.
• Transfer and convert archive files.
11
Process: Old vs. New
 New way = replication
• Create Linux replicas and edge servers connected to Windows commit
server.
• Use “verify –t” to transfer and convert archive files.
• Once everything but commit server is on Linux, failover commit server to
Linux RO replica.
12
Advantages/Disadvantages
 Advantages:
• Can do migration in stages.
 Disadvantages:
• Must run Linux servers with –C1 (case-insensitive) option.
13
Challenges
 RHEL7
 CVS2P4
 Platform specific references
14
Challenges – RHEL7
 IT standardized on RHEL7.
 RHEL7 uses systemd (vs. init scripts) to control services.
 Worked with John Halbig in support to create service unit
files for p4d (and p4p and p4broker), he created KB with
sample: http://answers.perforce.com/articles/KB/10832
15
Challenges – CVS2P4
 Original Perforce system created with cvs2p4 script.
 cvs2p4 works by using CVS change history to create
checkpoint to build DB files.
 The db entries refer to original CVS (RCS) archive files
stored in special “import” dir.
 CVS/RCS stores branches in the archive files, with revs like
1.1.1.1, but P4 uses separate files for branches.
16
Challenges – CVS2P4
 P4D resolves the CVS 1.1.1.1 branch revs OK, but “verify –t”
wouldn’t transfer them.
 Solution = Use smbclient + dos2unix to transfer the cvs2p4
import dir.
 This brought over ~70K changes, then used “verify –t” to
get rest.
17
Challenges – Platform specific entries
 Because we need to run in a mixed Win/Linux environment
during transition, can’t have platform specific entries
anywhere.
 Specific examples:
• Depot dir location.
• Trigger table entries.
18
Challenges – Depot dir location
 Win servers had “flat” P4ROOT layout where depot dirs were
nested in D:p4d dir. (e.g., D:p4ddepot)
 Short path length was partially to mitigate 260 char Win
max path issue.
 Didn’t want depots in P4ROOT on Linux, so set
“server.depot.root” configurable to put dirs in other location.
19
Challenges – Trigger table entries
 Single trigger table shared by all servers.
 As a result, can’t have:
• OS-specific paths in table.
• OS-specific binaries in table.
• OS-specific references in triggers.
20
Challenges – Trigger table paths
 Can’t use OS-specific paths in table.
 Solution = %serverroot% var + make sure tools (Perl,
Python, etc.) are present in base system path.
 Old =
C:python27python.exe C:bintrigger.py args
 New =
python2 %serverroot%/triggers/trigger.py args
21
Challenges – Trigger table binaries
 Can’t use OS-specific binaries in table.
 Solution = Wrappers and/or rename via client.
 Example: p4auth_ad.exe AD auth trigger.
 Old =
C:binp4auth_ad.exe args
 New =
%serverroot%/triggers/p4auth_ad.exe args
 Linux = p4auth_ad.pl gets synced as p4auth_ad.exe
22
Results
 Speed = Syncs, checkpoint/DB rebuild process, p4todb
rebuild are all faster on Linux servers.
 Load = Linux edge server for build farm handled 200+
“sync –f” at one time.
23
Summary
 Time
• It will take longer than expected.
 Effort
• It is easier than expected.
 Work with support.
24
References
 systemd = http://answers.perforce.com/articles/KB/10832
 P4Migrate = http://answers.perforce.com/articles/KB/2538
 P4Convert =
http://ftp.perforce.com/perforce/tools/p4convert/p4convert.
pdf
Thank you!
Contact: dfoglesong@tableau.com

Contenu connexe

Tendances

[Perforce] Admin Workshop
[Perforce] Admin Workshop[Perforce] Admin Workshop
[Perforce] Admin Workshop
Perforce
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
Joe Stein
 

Tendances (20)

[Perforce] Admin Workshop
[Perforce] Admin Workshop[Perforce] Admin Workshop
[Perforce] Admin Workshop
 
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructureDevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
 
Granular Protections Management with Triggers
Granular Protections Management with TriggersGranular Protections Management with Triggers
Granular Protections Management with Triggers
 
ProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQLProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQL
 
Getting modern with my sql
Getting modern with my sqlGetting modern with my sql
Getting modern with my sql
 
Kafka at half the price with JBOD setup
Kafka at half the price with JBOD setupKafka at half the price with JBOD setup
Kafka at half the price with JBOD setup
 
Building Linux IPv6 DNS Server (Complete Soft Copy)
Building Linux IPv6 DNS Server (Complete Soft Copy)Building Linux IPv6 DNS Server (Complete Soft Copy)
Building Linux IPv6 DNS Server (Complete Soft Copy)
 
Minerva: Drill Storage Plugin for IPFS
Minerva: Drill Storage Plugin for IPFSMinerva: Drill Storage Plugin for IPFS
Minerva: Drill Storage Plugin for IPFS
 
The architecture of oak
The architecture of oakThe architecture of oak
The architecture of oak
 
Improvements in Bitsy 1.5
Improvements in Bitsy 1.5Improvements in Bitsy 1.5
Improvements in Bitsy 1.5
 
DalmatinerDB and cockroachDB monitoring plataform
DalmatinerDB and cockroachDB monitoring plataformDalmatinerDB and cockroachDB monitoring plataform
DalmatinerDB and cockroachDB monitoring plataform
 
OSGifying the repository
OSGifying the repositoryOSGifying the repository
OSGifying the repository
 
The State of HBase Replication
The State of HBase ReplicationThe State of HBase Replication
The State of HBase Replication
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
 
January OpenNTF Webinar - Backup your Domino Server - New Options in V12
January OpenNTF Webinar - Backup your Domino Server - New Options in V12January OpenNTF Webinar - Backup your Domino Server - New Options in V12
January OpenNTF Webinar - Backup your Domino Server - New Options in V12
 
[Tel aviv merge world tour] Perforce Server Update
[Tel aviv merge world tour] Perforce Server Update[Tel aviv merge world tour] Perforce Server Update
[Tel aviv merge world tour] Perforce Server Update
 
An Introduction to Apache Kafka
An Introduction to Apache KafkaAn Introduction to Apache Kafka
An Introduction to Apache Kafka
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
 
SREConEurope15 - The evolution of the DHCP infrastructure at Facebook
SREConEurope15 - The evolution of the DHCP infrastructure at FacebookSREConEurope15 - The evolution of the DHCP infrastructure at Facebook
SREConEurope15 - The evolution of the DHCP infrastructure at Facebook
 
Fabric8 - Being devOps doesn't suck anymore
Fabric8 - Being devOps doesn't suck anymoreFabric8 - Being devOps doesn't suck anymore
Fabric8 - Being devOps doesn't suck anymore
 

Similaire à From Windows to Linux: Converting a Distributed Perforce Helix Infrastructure

Stress Free Deployment - Confoo 2011
Stress Free Deployment  - Confoo 2011Stress Free Deployment  - Confoo 2011
Stress Free Deployment - Confoo 2011
Bachkoutou Toutou
 
Cloud Foundry at Rakuten
Cloud Foundry at RakutenCloud Foundry at Rakuten
Cloud Foundry at Rakuten
Platform CF
 

Similaire à From Windows to Linux: Converting a Distributed Perforce Helix Infrastructure (20)

1049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 2016
1049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 20161049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 2016
1049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 2016
 
Best And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM ConnectionsBest And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM Connections
 
TIAD 2016 : Application delivery in a container world
TIAD 2016 : Application delivery in a container worldTIAD 2016 : Application delivery in a container world
TIAD 2016 : Application delivery in a container world
 
Running Production CDC Ingestion Pipelines With Balaji Varadarajan and Pritam...
Running Production CDC Ingestion Pipelines With Balaji Varadarajan and Pritam...Running Production CDC Ingestion Pipelines With Balaji Varadarajan and Pritam...
Running Production CDC Ingestion Pipelines With Balaji Varadarajan and Pritam...
 
Cl221
Cl221Cl221
Cl221
 
Stress Free Deployment - Confoo 2011
Stress Free Deployment  - Confoo 2011Stress Free Deployment  - Confoo 2011
Stress Free Deployment - Confoo 2011
 
CollabSphere 2019 - Dirty Secrets of the Notes Client
CollabSphere 2019 - Dirty Secrets of the Notes ClientCollabSphere 2019 - Dirty Secrets of the Notes Client
CollabSphere 2019 - Dirty Secrets of the Notes Client
 
Schema migration (DB migration) with Phinx
Schema migration (DB migration) with PhinxSchema migration (DB migration) with Phinx
Schema migration (DB migration) with Phinx
 
Demo 0.9.4
Demo 0.9.4Demo 0.9.4
Demo 0.9.4
 
Handling Database Deployments
Handling Database DeploymentsHandling Database Deployments
Handling Database Deployments
 
Engage 2020 - HCL Notes V11 Performance Boost
Engage 2020 - HCL Notes V11 Performance BoostEngage 2020 - HCL Notes V11 Performance Boost
Engage 2020 - HCL Notes V11 Performance Boost
 
Engage 2020 - HCL Notes V11 Performance Boost
Engage 2020 - HCL Notes V11 Performance BoostEngage 2020 - HCL Notes V11 Performance Boost
Engage 2020 - HCL Notes V11 Performance Boost
 
Replicate from Oracle to data warehouses and analytics
Replicate from Oracle to data warehouses and analyticsReplicate from Oracle to data warehouses and analytics
Replicate from Oracle to data warehouses and analytics
 
Syntergy upgrade open text content server with replicator - 7-3-2016
Syntergy   upgrade open text content server with replicator - 7-3-2016Syntergy   upgrade open text content server with replicator - 7-3-2016
Syntergy upgrade open text content server with replicator - 7-3-2016
 
Cloud Foundry at Rakuten
Cloud Foundry at RakutenCloud Foundry at Rakuten
Cloud Foundry at Rakuten
 
Red Teaming macOS Environments with Hermes the Swift Messenger
Red Teaming macOS Environments with Hermes the Swift MessengerRed Teaming macOS Environments with Hermes the Swift Messenger
Red Teaming macOS Environments with Hermes the Swift Messenger
 
New VMware Continuent 5.0 - A powerful and cost-efficient Oracle GoldenGate a...
New VMware Continuent 5.0 - A powerful and cost-efficient Oracle GoldenGate a...New VMware Continuent 5.0 - A powerful and cost-efficient Oracle GoldenGate a...
New VMware Continuent 5.0 - A powerful and cost-efficient Oracle GoldenGate a...
 
RNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-Reloaded
RNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-ReloadedRNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-Reloaded
RNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-Reloaded
 
RNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-Reloaded
RNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-ReloadedRNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-Reloaded
RNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-Reloaded
 
Data Diffing Based Software Architecture Patterns
Data Diffing Based Software Architecture PatternsData Diffing Based Software Architecture Patterns
Data Diffing Based Software Architecture Patterns
 

Plus de Perforce

Plus de Perforce (20)

How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning Needs
 
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
 
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPs
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development Process
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOps
 
How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog
 
Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team
 
Shift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowShift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New Workflow
 
Hybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldHybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated World
 
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterpriseBetter, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
 
Easier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMEasier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALM
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog
 
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
 
How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure
 
Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2
 
Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?
 
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
 
What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4
 
Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison
 

Dernier

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Dernier (20)

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 

From Windows to Linux: Converting a Distributed Perforce Helix Infrastructure

  • 1. From Windows to Linux: Converting a Distributed Perforce Helix Infrastructure David Foglesong Senior Systems Software Engineer Tableau Software
  • 2. 2 About Tableau Software Tableau Software (NYSE: DATA) helps people see and understand data. Tableau helps anyone quickly analyze, visualize and share information. More than 35,000 customer accounts get rapid results with Tableau in the office and on- the-go. And tens of thousands of people use Tableau Public to share data in their blogs and websites. See how Tableau can help you by downloading the trial at www.tableau.com/trial.
  • 3. 3 Perforce At Tableau  Started with CVS.  Converted to Perforce in 2007 (on Windows).  Infrastructure has evolved over time: One server > commit + replicas > commit + replicas + edge servers.  650K+ changes, 900+ users, commit = 500G DB, edge = 800G DB.  3 main dev offices, several smaller offices.
  • 4. 4 Why Change?  Tableau product change from Win-only to Win/Mac to Win/Mac/mobile (iOS/Android).  Run other parts of build infrastructure (Artifactory, ReviewBoard, OpenGrok) on Linux.  Dev management wants “best” systems = performance, stability, scalability.  Perforce admins prefer Linux. 
  • 5. 5 Before  1x commit server  1x RO replica (backup and reporting)  3x fwd replica (at main dev offices)  Proxies at smaller dev offices.  1x edge server (for build farm) + RO replica (backup)  Brokers in front of everything.  All on Windows.
  • 7. 7 After  1x commit server  2x RO replicas (backup and reporting)  5x edge servers (3x for offices, 2x for build farm)  5x RO replicas (backups for edge servers)  Brokers in front of everything.  All on Linux.  Most in central data center.  Proxies in dev offices.
  • 9. 9 Edge Servers vs. Forwarding Replicas  Why switch offices to edge servers? • Remote users (Palo Alto) see small lag on commands. • Want to move most user data (db.have) off commit server – goal is to have minimal (ideally none) connections from human users on commit server.  Move to cluster? • Not at this time. Want to preserve option of moving edge server to dev office if needed.
  • 10. 10 Process: Old vs. New  Old way = checkpoint manipulation • Either via scripts or p4migrate. • Need to fix case inconsistencies in metadata. E.g., - //depot/source/foo.c#1 vs. //depot/SOURCE/bar.c#1 - User “bob” vs. user “BOB”. • Transfer and convert archive files.
  • 11. 11 Process: Old vs. New  New way = replication • Create Linux replicas and edge servers connected to Windows commit server. • Use “verify –t” to transfer and convert archive files. • Once everything but commit server is on Linux, failover commit server to Linux RO replica.
  • 12. 12 Advantages/Disadvantages  Advantages: • Can do migration in stages.  Disadvantages: • Must run Linux servers with –C1 (case-insensitive) option.
  • 13. 13 Challenges  RHEL7  CVS2P4  Platform specific references
  • 14. 14 Challenges – RHEL7  IT standardized on RHEL7.  RHEL7 uses systemd (vs. init scripts) to control services.  Worked with John Halbig in support to create service unit files for p4d (and p4p and p4broker), he created KB with sample: http://answers.perforce.com/articles/KB/10832
  • 15. 15 Challenges – CVS2P4  Original Perforce system created with cvs2p4 script.  cvs2p4 works by using CVS change history to create checkpoint to build DB files.  The db entries refer to original CVS (RCS) archive files stored in special “import” dir.  CVS/RCS stores branches in the archive files, with revs like 1.1.1.1, but P4 uses separate files for branches.
  • 16. 16 Challenges – CVS2P4  P4D resolves the CVS 1.1.1.1 branch revs OK, but “verify –t” wouldn’t transfer them.  Solution = Use smbclient + dos2unix to transfer the cvs2p4 import dir.  This brought over ~70K changes, then used “verify –t” to get rest.
  • 17. 17 Challenges – Platform specific entries  Because we need to run in a mixed Win/Linux environment during transition, can’t have platform specific entries anywhere.  Specific examples: • Depot dir location. • Trigger table entries.
  • 18. 18 Challenges – Depot dir location  Win servers had “flat” P4ROOT layout where depot dirs were nested in D:p4d dir. (e.g., D:p4ddepot)  Short path length was partially to mitigate 260 char Win max path issue.  Didn’t want depots in P4ROOT on Linux, so set “server.depot.root” configurable to put dirs in other location.
  • 19. 19 Challenges – Trigger table entries  Single trigger table shared by all servers.  As a result, can’t have: • OS-specific paths in table. • OS-specific binaries in table. • OS-specific references in triggers.
  • 20. 20 Challenges – Trigger table paths  Can’t use OS-specific paths in table.  Solution = %serverroot% var + make sure tools (Perl, Python, etc.) are present in base system path.  Old = C:python27python.exe C:bintrigger.py args  New = python2 %serverroot%/triggers/trigger.py args
  • 21. 21 Challenges – Trigger table binaries  Can’t use OS-specific binaries in table.  Solution = Wrappers and/or rename via client.  Example: p4auth_ad.exe AD auth trigger.  Old = C:binp4auth_ad.exe args  New = %serverroot%/triggers/p4auth_ad.exe args  Linux = p4auth_ad.pl gets synced as p4auth_ad.exe
  • 22. 22 Results  Speed = Syncs, checkpoint/DB rebuild process, p4todb rebuild are all faster on Linux servers.  Load = Linux edge server for build farm handled 200+ “sync –f” at one time.
  • 23. 23 Summary  Time • It will take longer than expected.  Effort • It is easier than expected.  Work with support.
  • 24. 24 References  systemd = http://answers.perforce.com/articles/KB/10832  P4Migrate = http://answers.perforce.com/articles/KB/2538  P4Convert = http://ftp.perforce.com/perforce/tools/p4convert/p4convert. pdf

Notes de l'éditeur

  1. Tableau started in 2003, is another “Stanford spinoff” company. Started in Seattle, now has a number of offices. Has grown very quickly. About me: Have used and administered Perforce for 10+ years at multiple companies. At Tableau I work on the “continuous delivery systems” team that manages Perforce, TeamCity, Artifactory, and similar systems. This is one of two presentations from Tableau staff at the conference. Why this presentation: Have attended many Perforce conferences, and always like to see presentations where people are doing unusual things with Perforce.
  2. Also use other Perforce products: P4Web, p4todb, Swarm, GitFusion, GitSwarm (soon). Many other systems connect to Perforce: TeamCity, ReviewBoard, OpenGrok, etc. Other presentation has some examples of how data in Perforce is being used. Main offices in WA (Seattle, Kirkland) and CA (Palo Alto). Also have offices in Austin, Vancouver (CA), and UK/Germany (HyPer).
  3. “best” solution = Perforce generally works best on Linux. Linux is the most widely used platform for Perforce, it’s what gets the most dev attention. Helps that we have IT staff that understand Linux. No monthly reboot for updates.  To last point, want to note that I’ve administered Perforce for many years on Windows, and some of the systems were reasonably large at 2500+ users, so I don’t really have any issues with running Perforce on Windows.
  4. Tech writer said I needed to put some graphics in the presentation…
  5. RO replicas to back up office edge servers are located in remote offices for reporting and DR.
  6. Edge servers = 3x for offices, 2x for build farms. Not shown: RO replicas to back up edge servers are located in offices (on same host as proxy).
  7. At previous job (10+ years back) wrote Perl toolkit to do Win to Solaris migration. It can be done, but it’s a lot of work. Have played with p4migrate, but haven’t used it to convert a production system. Think it only does file metadata, so you might still need to fix user names, client names, etc. Know it doesn’t like unloaded clients, there may be other limitations.
  8. Our process: Start with Linux edge server for build farm (stress test) and RO replica for p4todb/reporting. Next set up edge servers to replace dev office fwd replicas. Final step is to migrate commit server. Tableau is not the only site using this approach.
  9. Stages = If you have large enough metadata, the migration scripts can take hours or days to run, and you have to do EVERY server at the SAME TIME – which can be an issue when you have 5+ servers to convert all at once. Tableau (like other companies) is doing “continuous deployment” where we release updates on a regular cadence. Shutting down the SCM system for days is a difficult sell.
  10. IT standard = need to use this on all “production” servers unless there’s a really good reason not to. Systemd = A year+ when I started working on this project, there weren’t many references to running P4D with systemd. Now there is the KB article and the SDP has example. Mention OOMKiller setting. RHEL7 has full support for XFS now. Another challenge for RHEL7: We also run GitFusion, which doesn’t (at last check) support https:// on RHEL7, but it can be set up manually.
  11. Cvs2p4 is not the “p4convert” CVS import tool that Perforce has now.
  12. There’s a KB article about the proxy not working right with CVS 1.1.1.1 format archives too. smbclient has option to automatically lowercase all files it transfers. Why not use smbclient to transfer all archives? Because we have a few files that have extended chars in the names, and smbclient won’t convert the chars but “verify –t” will. (Probably a Win vs. Linux codepage issue.) CVS stores binary files inside ,v files, so even binaries had to have dos2unix run over them. Iterated across each change via “p4 –s verify –qtz //…@1,@1”, etc., to make sure everything gets transferred. When using verify –t to transfer files, don’t forget spec depot (no changes or lazy copies there) and unload depot (-U).
  13. Depot dirs = Fortunately, we did not have hard-coded paths in the depot definition which would have made this harder. 260 char max path = now fixed with lfn configurable.
  14. What about running from depot? Won’t work for us because we have support files that need to be alongside trigger. Also wouldn’t work during period when both Win and Linux servers are running side-by-side. OS-specific references = Can’t have “C:\logs” (or similar) hard-coded in trigger scripts. Can’t (or at least shouldn’t) assume specific user context.
  15. Perforce server on Win will work with Unix path separator (forward slash).
  16. Linux doesn’t care about extensions, so as long as file has +x setting and #!/bin/env perl (or similar) line at start, you can call a Bash script with a .bat extension or a Perl script with a .exe extension. Similar problems with Swarm trigger (VBS vs. sh) although that’s been replaced by a single Perl script now.
  17. Not going to put up a bunch of spreadsheet numbers – not really an apples to apples comparison, since Linux servers are better spec’d hardware (and are using XFS) and as we were doing this transition the codebase was getting smaller (moving third-party items to Artifactory) – but the number of build agents was growing.
  18. Time = Other projects/issues/interruptions, time to migrate users from fwd replicas to edge servers, moving around systems during process, adding another edge server, etc. Effort = Old way with checkpoint surgery is a LOT of work. (One of Ed’s original tasks when he was hired 6 years ago was to do conversion to Linux, and it was just too much time.) Support = Lots of questions during this process – systemd, issues with integrity logs, etc. Side-effect of change: All Linux hosts are identical configuration in terms of hardware, drive layout, OS, scripts, etc., which makes it easier for a team to support. Win hosts were built up over several years, so they’re not in sync.