Bug #7110
closedEMG doesn't support modules leading to very many process instances
0%
Description
Instead it terminates with the exception like below:
2016-04-22 21:50:09 (components.py:100) EMG ERROR> Raise exception: Traceback (most recent call last): File "/core/components.py", line 94, in run self.main() File "/core/utils.py", line 38, in callbacks_caller ret = attr(*args, **kwargs) File "/core/avtg/emg/__init__.py", line 60, in generate_environment tr.translate(mcs, model) File "/core/avtg/emg/translator/__init__.py", line 37, in translate self._generate_code(analysis, model) File "/core/avtg/emg/translator/sequential.py", line 111, in _generate_code base_list = self.__instanciate_processes(analysis, base_list, process) File "/core/avtg/emg/translator/sequential.py", line 218, in __instanciate_processes newp = self.__copy_process(instance) File "/core/avtg/emg/translator/sequential.py", line 179, in __copy_process format(int(self.conf["translation options"]["max instances number"]))) RuntimeError: EMG tries to generate more instances than it is allowed by configuration (300)
As far as I understand it was done to avoid bug #7037 but we can't leave this as is.
30 great modules from all Linux kernel modules are rejected by EMG due to this issue:- drivers/atm/solos-pci.ko
- drivers/gpu/drm/i915/i915.ko
- drivers/gpu/drm/nouveau/nouveau.ko
- drivers/gpu/drm/radeon/radeon.ko
- drivers/hwmon/adm1026.ko
- drivers/hwmon/adt7475.ko
- drivers/hwmon/dme1737.ko
- drivers/hwmon/f71805f.ko
- drivers/hwmon/gl518sm.ko
- drivers/hwmon/it87.ko
- drivers/hwmon/lm63.ko
- drivers/hwmon/lm87.ko
- drivers/hwmon/lm93.ko
- drivers/hwmon/vt8231.ko
- drivers/hwmon/w83627hf.ko
- drivers/hwmon/w83781d.ko
- drivers/scsi/lpfc/lpfc.ko
- drivers/scsi/qla2xxx/qla2xxx.ko
- drivers/target/target_core_mod.ko
- fs/dlm/dlm.ko
- fs/ext4/ext4.ko
- fs/nfs/nfsv4.ko
- fs/nfsd/nfsd.ko
- fs/ocfs2/ocfs2.ko
- fs/xfs/xfs.ko
- net/bluetooth/bluetooth.ko
- net/ipv6/ipv6.ko
- net/mac80211/mac80211.ko
- net/sunrpc/sunrpc.ko
- net/wireless/cfg80211.ko
Besides EMG rejects one module from the validation set in such the way.
Updated by Evgeny Novikov over 8 years ago
- Subject changed from EMG doesn't generate environment models for complex modules to EMG doesn't support modules leading to very many process instances
Updated by Ilja Zakharov over 8 years ago
In branch 'emg-array-instances' I drastically decreased number of instances using a completely different algorithm. By the way there are still very many of them can be generated for modules given in the list. So the problem is unfortunately still actual.
By the way EMG has performance problems iterating over call graph of such huge modules which also causes many troubles. So I am adding issue #7192 as a subtask, since it also prevents model generation for huge drivers.
Updated by Ilja Zakharov over 8 years ago
In the branch 'emg-performance-fixes' implemented several important optimizations which reduces number of instances, reduces memory usage and gives a considerable speed-up.
By the way the issue is not solved, since memory usage is high enough.
Updated by Evgeny Novikov over 8 years ago
- Priority changed from High to Immediate
I merged the given branch to master in e3a3d1e since master doesn't likely work both with and without these optimizations. I just hope that it works better.
Updated by Ilja Zakharov over 8 years ago
Branch 'emg-performance-fixes' contains optimizations which drastically reduce time and memory usage in several times. For example 'drivers/net/ethernet/sfc/sfc.ko' driver can be verified with less than 300 megabytes used by EMG comparing with the recent value of 1,2Gb.
Also an environment model contains much less useless code than before.
Updated by Evgeny Novikov over 8 years ago
- Status changed from Resolved to Closed
- Published in build set to 14d5a0f
The branch was merged to master in 14d5a0f. Let's hope that this will help!