Would my virus scanner be able to scan multiple files concurrently with dual CPU instead of multi-core?


From the software side in 99% of all cases, multicore processor is no different than multiprocessor system.

In some cases, there could be an advantage in the multicore camp because the communication between cores is quicker than it is for multiprocessor systems.

On the other hand in computers which need huge amounts of RAM, multiprocessor systems may be better because you can assign RAM to each processor to control for its own tasks and in that way increase the amount of available RAM.

Once again, multicore processors such as ones used by today's personal computers are fully capable or running several tasks at the same time and there would be almost no advantage of having multiprocessor system.

Also do note that the load is controlled by OS kernel. It may decide that in a multicore or multiprocessor system (which are same from OS and application point of view) it will be better for the whole system to dedicate the rest of the cores to some task other than virus scanning.

Another point of view is HDD. It can't physically read two files at the same time, so it's going to be a major limiting factor. Some AV software may copy files to RAM first and them try to scan them in parallel, but there would be no performance improvement because usually the limiting factor is HDD speed, so there's no need to take up RAM.

You could always scan in parallel files on different hard disks and improve performance that way. I had no problems with scanning in parallel two directories on two different HDDs using Avast 6.

The short answer is: a design quirk of the scanner.

The ability to scan multiple files concurrently has more to do with how your virus scanner is programmed. To do what you want, the software has to be made to run parallel reads. I don't know of any virus scanner that does this.

"Any idea why AV don't run parallel processes? Is it just a legacy, or is there some design constraint?"

Writing multi-threaded code is an order of magnitude harder than writing single-threaded code, so we tend to avoid it unless it provides a great benefit.

In this case, the speed of the anti-virus scan is bottle-necked by the speed of the hard-drive/memory reads, not the speed of the CPU, so multi-threading would offer very little benefit.