What is most valuable?
- Fine grained access control.
- Ability to handle very large file counts, very large version counts, and very large file sizes
- The server is very efficient
- Perforce is one of very few software vendors who target documented, standard, stable APIs, instead of some particular server O/S.
- We can run it on our standard server image instead of preparing and maintaining a special host just for them. This is the case even as our standard server image evolves.
How has it helped my organization?
The tool is central to our workflow. It does the following:
- Drives continuous delivery and integration
- Delivers large file sets to remote sites faster than anything else
- Recalls history reliably
What needs improvement?
- Perforce does not appear to have an enterprise scale software test environment. We sometimes serve as their software QA department.
- The database engine is very fast, but has proven difficult for them to debug. Their attempts to work around the scalability issues with its original table-locking design have become a kludge.
- The “shelving” feature (an answer to Git’s lightweight branching) was released in a half-baked state. We still don’t have a simple, reliable process for terminating a user who left shelved files behind.
- Perforce tries way too hard to be platform-neutral. Since process management works differently on MS-Windows, they have avoided using Unix inter-process communications features. It’s a forking server that doesn’t use signals or shared memory! They’d be better off if they abandoned Windows as a server O/S, or bite the bullet and start using #ifdef.
- Edit: In 2017, Perforce dropped support for FreeBSD and Raspberry Pi. Very unfortunate, considering the performance and reliability limitations of the Linux NFS client. Since Windows is not a suitable server OS, that leaves only MacOS and Linux.
For how long have I used the solution?
My company has been using this solution since 1998.
What was my experience with deployment of the solution?
At very large sync traffic rates, the Linux NFS client under the server becomes unstable. There is no internal load management, so a single abusive command by a user is able to crash the server and corrupt the database.
What do I think about the stability of the solution?
As long as it's not grossly overloaded, the server is remarkably stable.
What do I think about the scalability of the solution?
The server runs well on a host with 0.25 TB of RAM and 40 Xeon cores.
It becomes difficult to manage as the server instance outgrows the hardware platform.
Offline checkpoints are the only database backup mechanism. Interrupting the checkpoint writing process can corrupt the database.
At a certain scale, you will be forced into deploying their “federated” cluster configuration.
How are customer service and technical support?
Technical support for routine issues and tutoring beginners is absolutely the best. They follow up until you are happy. The people you reach by phone or email know the product thoroughly and know how to get you going. (This is comparable to Rackspace or Linode.)
Support that you receive when you run into obscure bugs that only enterprise customers would ever see, is less amazing. I’ve had to campaign to get obvious bugs fixed.
Which solution did I use previously and why did I switch?
I have used Git and Revision Control System (RCS). These cannot handle our file sets. Git and Gerritt take a thousand times more infrastructure for the same user and file count and transaction rate.
How was the initial setup?
The initial setup was mixed. A basic installation is trivial and reliable.
It gets complex when you add redundancy, fancy access controls, and build farm replicas.
One real annoyance is Perforce’s newfound preference to ship a pre-configured container rather than a proper enterprise installation package.
We need a standardized, long term supported platform for a server O/S. Last week’s Ubuntu CD in a VM isn’t what we need.
What's my experience with pricing, setup cost, and licensing?
If you need to version millions of files, it’s worth the money.
What other advice do I have?
- Read the manual and the release notes. Configuration is intricate, but well documented.
- Standardize your installation so you can move it around and upgrade it reliably. This server is more reliable than the hardware you will run it on.
- Build hardware redundancy into your setup from the beginning, so you don’t have to add that into your operation later while it’s running.
- The server database is I/O bound. Any NFS server will be adequate for the versioned files, but the database needs to be on the fastest direct attached RAID array that you can set up.