I am doing performance testing with a master slave configuration. Currently I am using 4 Slave Machines, and have unique test data files on each slave machine. I am wondering if there is a best practice or recommendation on whether to have unique Test Data per Slave or have all of the same Test Data on all of the slave machines.
If you want to have a configuration in which each thread should use unique data, even across slave machines, then you should use different Test Data files on different test machine. As you have to place this Test Data file on each slave machine (with same location as on master) it means JMeter pick Test Data (CSV file) from the local machine and not from the Master, so placing different data set on different machine will ensure uniqueness of the test data parameters being used by each thread in distributed mode. This is what I have used and it works fine.
Additionally, there is a field in CSV Data Set Configuration i.e. "Sharing Mode" may be it is helpful for using same Test Data across slave machines. But, I have never tried this one. you can refer to this link for more information about sharing mode.
But, just to keep it simple, use different test data files over different machines.