1. A system, comprising: functional units that are dynamically configurable during operation of the system; a first module that collects performance data while the system executes a program with the functional units configured according to a configuration setting; a second module that sends information to a server, wherein the information includes the performance data, the configuration setting and data from which the program may be identified; and a third module that instructs the system to re-configure the functional units with a new configuration setting received from the server while the program is being executed by the system, wherein the new configuration setting is based on analysis by the server of the information sent by the system and of similar information sent by other systems that include the dynamically configurable functional units.