SlideShare a Scribd company logo
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
Ad

More Related Content

What's hot (20)

[Perforce] Admin Workshop
[Perforce] Admin Workshop[Perforce] Admin Workshop
[Perforce] Admin Workshop
Perforce
 
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
Angelo Failla
 
Granular Protections Management with Triggers
Granular Protections Management with TriggersGranular Protections Management with Triggers
Granular Protections Management with Triggers
Perforce
 
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
René Cannaò
 
Getting modern with my sql
Getting modern with my sqlGetting modern with my sql
Getting modern with my sql
Jakob Lorberblatt
 
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
Dong Lin
 
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)
Hari
 
Minerva: Drill Storage Plugin for IPFS
Minerva: Drill Storage Plugin for IPFSMinerva: Drill Storage Plugin for IPFS
Minerva: Drill Storage Plugin for IPFS
BowenDing4
 
The architecture of oak
The architecture of oakThe architecture of oak
The architecture of oak
Michael Dürig
 
Improvements in Bitsy 1.5
Improvements in Bitsy 1.5Improvements in Bitsy 1.5
Improvements in Bitsy 1.5
LambdaZen LLC
 
DalmatinerDB and cockroachDB monitoring plataform
DalmatinerDB and cockroachDB monitoring plataformDalmatinerDB and cockroachDB monitoring plataform
DalmatinerDB and cockroachDB monitoring plataform
Leandro Totino Pereira
 
OSGifying the repository
OSGifying the repositoryOSGifying the repository
OSGifying the repository
Jukka Zitting
 
The State of HBase Replication
The State of HBase ReplicationThe State of HBase Replication
The State of HBase Replication
HBaseCon
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
Joe Stein
 
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
Howard Greenberg
 
[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
Perforce
 
An Introduction to Apache Kafka
An Introduction to Apache KafkaAn Introduction to Apache Kafka
An Introduction to Apache Kafka
Amir Sedighi
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
Craig Smith
 
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
Angelo Failla
 
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
Henryk Konsek
 
[Perforce] Admin Workshop
[Perforce] Admin Workshop[Perforce] Admin Workshop
[Perforce] Admin Workshop
Perforce
 
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
Angelo Failla
 
Granular Protections Management with Triggers
Granular Protections Management with TriggersGranular Protections Management with Triggers
Granular Protections Management with Triggers
Perforce
 
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
René Cannaò
 
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
Dong Lin
 
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)
Hari
 
Minerva: Drill Storage Plugin for IPFS
Minerva: Drill Storage Plugin for IPFSMinerva: Drill Storage Plugin for IPFS
Minerva: Drill Storage Plugin for IPFS
BowenDing4
 
The architecture of oak
The architecture of oakThe architecture of oak
The architecture of oak
Michael Dürig
 
Improvements in Bitsy 1.5
Improvements in Bitsy 1.5Improvements in Bitsy 1.5
Improvements in Bitsy 1.5
LambdaZen LLC
 
DalmatinerDB and cockroachDB monitoring plataform
DalmatinerDB and cockroachDB monitoring plataformDalmatinerDB and cockroachDB monitoring plataform
DalmatinerDB and cockroachDB monitoring plataform
Leandro Totino Pereira
 
OSGifying the repository
OSGifying the repositoryOSGifying the repository
OSGifying the repository
Jukka Zitting
 
The State of HBase Replication
The State of HBase ReplicationThe State of HBase Replication
The State of HBase Replication
HBaseCon
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
Joe Stein
 
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
Howard Greenberg
 
[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
Perforce
 
An Introduction to Apache Kafka
An Introduction to Apache KafkaAn Introduction to Apache Kafka
An Introduction to Apache Kafka
Amir Sedighi
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
Craig Smith
 
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
Angelo Failla
 
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
Henryk Konsek
 

Similar to 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
panagenda
 
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
LetsConnect
 
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
The Incredible Automation Day
 
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...
HostedbyConfluent
 
Cl221
Cl221Cl221
Cl221
Juliette Ponnet
 
Stress Free Deployment - Confoo 2011
Stress Free Deployment  - Confoo 2011Stress Free Deployment  - Confoo 2011
Stress Free Deployment - Confoo 2011
Bachkoutou Toutou
 
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
Christoph Adler
 
Schema migration (DB migration) with Phinx
Schema migration (DB migration) with PhinxSchema migration (DB migration) with Phinx
Schema migration (DB migration) with Phinx
Hadi Ariawan
 
Demo 0.9.4
Demo 0.9.4Demo 0.9.4
Demo 0.9.4
eTimeline, LLC
 
Handling Database Deployments
Handling Database DeploymentsHandling Database Deployments
Handling Database Deployments
Mike Willbanks
 
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
panagenda
 
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
Christoph Adler
 
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
Continuent
 
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
Vijay Sharma
 
Cloud Foundry at Rakuten
Cloud Foundry at RakutenCloud Foundry at Rakuten
Cloud Foundry at Rakuten
Platform CF
 
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
Justin Bui
 
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...
Continuent
 
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
panagenda
 
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
Christoph Adler
 
Data Diffing Based Software Architecture Patterns
Data Diffing Based Software Architecture PatternsData Diffing Based Software Architecture Patterns
Data Diffing Based Software Architecture Patterns
Huahai Yang
 
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
panagenda
 
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
LetsConnect
 
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
The Incredible Automation Day
 
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...
HostedbyConfluent
 
Stress Free Deployment - Confoo 2011
Stress Free Deployment  - Confoo 2011Stress Free Deployment  - Confoo 2011
Stress Free Deployment - Confoo 2011
Bachkoutou Toutou
 
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
Christoph Adler
 
Schema migration (DB migration) with Phinx
Schema migration (DB migration) with PhinxSchema migration (DB migration) with Phinx
Schema migration (DB migration) with Phinx
Hadi Ariawan
 
Handling Database Deployments
Handling Database DeploymentsHandling Database Deployments
Handling Database Deployments
Mike Willbanks
 
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
panagenda
 
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
Christoph Adler
 
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
Continuent
 
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
Vijay Sharma
 
Cloud Foundry at Rakuten
Cloud Foundry at RakutenCloud Foundry at Rakuten
Cloud Foundry at Rakuten
Platform CF
 
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
Justin Bui
 
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...
Continuent
 
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
panagenda
 
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
Christoph Adler
 
Data Diffing Based Software Architecture Patterns
Data Diffing Based Software Architecture PatternsData Diffing Based Software Architecture Patterns
Data Diffing Based Software Architecture Patterns
Huahai Yang
 
Ad

More from 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
Perforce
 
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...
Perforce
 
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...
Perforce
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPs
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog
Perforce
 
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...
Perforce
 
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
Perforce
 
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
Perforce
 
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?
Perforce
 
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 ...
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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...
Perforce
 
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...
Perforce
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPs
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
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
Perforce
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog
Perforce
 
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...
Perforce
 
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
Perforce
 
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
Perforce
 
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?
Perforce
 
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 ...
Perforce
 
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
Perforce
 
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
Perforce
 
Ad

Recently uploaded (20)

Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Xforce Keygen 64-bit AutoCAD 2025 Crack
Xforce Keygen 64-bit AutoCAD 2025  CrackXforce Keygen 64-bit AutoCAD 2025  Crack
Xforce Keygen 64-bit AutoCAD 2025 Crack
usmanhidray
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and CollaborateMeet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Maxim Salnikov
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Xforce Keygen 64-bit AutoCAD 2025 Crack
Xforce Keygen 64-bit AutoCAD 2025  CrackXforce Keygen 64-bit AutoCAD 2025  Crack
Xforce Keygen 64-bit AutoCAD 2025 Crack
usmanhidray
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and CollaborateMeet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Maxim Salnikov
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 

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

Editor's Notes

  • #3: 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.
  • #4: 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).
  • #5: “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.
  • #7: Tech writer said I needed to put some graphics in the presentation…
  • #8: RO replicas to back up office edge servers are located in remote offices for reporting and DR.
  • #9: 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).
  • #11: 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.
  • #12: 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.
  • #13: 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.
  • #15: 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.
  • #16: Cvs2p4 is not the “p4convert” CVS import tool that Perforce has now.
  • #17: 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).
  • #19: 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.
  • #20: 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.
  • #21: Perforce server on Win will work with Unix path separator (forward slash).
  • #22: 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.
  • #23: 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.
  • #24: 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.