Project

General

Profile

Actions

Feature #7304

closed

Allow users to reject verification objects of large sizes

Added by Evgeny Novikov over 8 years ago. Updated over 8 years ago.

Status:
Closed
Priority:
Urgent
Category:
Program fragments generation
Target version:
-
Start date:
06/20/2016
Due date:
% Done:

0%

Estimated time:
Published in build:
753dd6b

Description

We already realized that large modules are hard to prepare for verification and to verify. In particular they usually require very much resources for all non-trivial cases. Sometimes it even can prevent other modules from checking, e.g. due to hang ups and resource exhausting.

Instead of investigating some implicit ways to reject such the modules, we decided to supply a new straightforward option that will allow to reject corresponding verification objects early if their LOCs exceed the specified maximum one. Then we will have more chances to verify all modules even after some changes in tools/specifications.

To have a way to experiment with these large modules nevertheless it has sense to support the supplementary option that reject verification objects that occupies less LOCs that the minimum one.


Related issues 2 (0 open2 closed)

Blocked by Klever - Feature #7303: Calculate sizes of module source code and show them in BridgeClosedAlexey Polushkin06/20/2016

Actions
Blocks Klever - Feature #7327: Experiment with large modulesRejected06/22/2016

Actions
Actions #1

Updated by Evgeny Novikov over 8 years ago

In accordance with the table attached in #7303 (it shows LOCs of Linux 3.14 modules) it has sense to reject by default all modules which sizes exceed 30000 LOCs. There are just 25 such modules (~0.6% of 4356 in total):
  1. drivers/gpu/drm/radeon/radeon.ko (148557)
  2. fs/btrfs/btrfs.ko (99032)
  3. drivers/gpu/drm/nouveau/nouveau.ko (89102)
  4. fs/xfs/xfs.ko (88552)
  5. drivers/scsi/lpfc/lpfc.ko (71479)
  6. drivers/gpu/drm/i915/i915.ko (69131)
  7. drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko (67306)
  8. drivers/staging/rtl8188eu/r8188eu.ko (67262)
  9. fs/ocfs2/ocfs2.ko (56715)
  10. drivers/scsi/qla2xxx/qla2xxx.ko (53188)
  11. drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko (52419)
  12. drivers/staging/rtl8821ae/rtl8821ae.ko (47027)
  13. drivers/scsi/bfa/bfa.ko (45485)
  14. drivers/infiniband/hw/qib/ib_qib.ko (44819)
  15. net/mac80211/mac80211.ko (44534)
  16. drivers/net/wireless/b43/b43.ko (44386)
  17. drivers/staging/lustre/lustre/ptlrpc/ptlrpc.ko (42765)
  18. fs/ext4/ext4.ko (40943)
  19. fs/cifs/cifs.ko (40610)
  20. drivers/isdn/hisax/hisax.ko (36218)
  21. net/ipv6/ipv6.ko (35632)
  22. drivers/staging/vt6655/vt6655_stage.ko (35295)
  23. net/sctp/sctp.ko (35122)
  24. fs/ubifs/ubifs.ko (32011)
  25. net/bluetooth/bluetooth.ko (30584)

For some of them it is already known that EMG needs more than 300 MB (sometimes much more, e.g. more than 4 GB for nouveau.ko). Weaver needs ~500 MB for radeon.ko even without any real instrumentation. These issues should be addressed in other feature requests and definitely they should not affect all other ~99.4% of modules.

Actions #2

Updated by Alexey Polushkin over 8 years ago

  • Status changed from New to Resolved

Resolved in branch 'modules_reject_by_loc'.
Parameter 'maximum verification object size' is located at the root of the JSON config file. Also, the parameter was added to presets.

Actions #3

Updated by Evgeny Novikov over 8 years ago

  • Status changed from Resolved to Closed
  • Published in build set to 2174e29

I merged the branch to master in 2174e29. Everybody needs to update their jobs to specify the maximum verification object size.

Actions #4

Updated by Alexey Khoroshilov over 8 years ago

  • Status changed from Closed to Resolved

Evgeny Novikov wrote:

Everybody needs to update their jobs to specify the maximum verification object size.

Do you mean "everybody needs to update job to take benefits from the parameter" or that it became mandatory?

Actions #5

Updated by Evgeny Novikov over 8 years ago

Alexey Khoroshilov wrote:

Evgeny Novikov wrote:

Everybody needs to update their jobs to specify the maximum verification object size.

Do you mean "everybody needs to update job to take benefits from the parameter" or that it became mandatory?

In all new preset jobs it is specified by default. So after update one will use it by default.

To experiment with large modules it is required to change jobs respectively. For instance, one should be able to reject all small modules. Unfortunately it turned out that the corresponding option wasn't implemented still although it was mentioned originally in the description.

Actions #6

Updated by Alexey Polushkin over 8 years ago

Improved in the 'reject_by_loc_minimum' branch.

Actions #7

Updated by Evgeny Novikov over 8 years ago

  • Status changed from Resolved to Closed
  • Published in build changed from 2174e29 to 753dd6b

I merged the branch into master in 753dd6b. The supplementary parameter is minimum verification object size. The default parameter rejecting large modules is specified in all preset jobs.

Actions

Also available in: Atom PDF