Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CI] Unify pipeline files into one, change harbor url #210

Draft
wants to merge 237 commits into
base: vNext
Choose a base branch
from

Conversation

NirWolfer
Copy link
Contributor

Description

Jenkins job builder (JJB) allows for multiple job definitions in one file, this will make it easier to share common variables such as folder or git url, as well as make it easier to maintain in the future.

In the PDC site the harbor url is different and needs to be changed

What

Merge all jjb files into one under proj_jjb.yaml
Change registry url in release_matrix to match the PDC harbor url Remove the latest_release link from do_release script, requrest by the dev team

Change type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Documentation content changes
  • Tests
  • Other

Check list

  • Code follows the style de facto guidelines of this project
  • Comments have been inserted in hard to understand places
  • Documentation has been updated (if necessary)
  • Test has been added (if possible)

AlexanderGrissik and others added 30 commits January 14, 2024 16:02
Signed-off-by: Alexander Grissik <[email protected]>
At most a single element of this vector is always used.
Once rfs constructor is complete there must be exactly one attach_flow_data element in case of ring_simple.
For ring_tap this element remains null.

Signed-off-by: Alexander Grissik <[email protected]>
Signed-off-by: Alexander Grissik <[email protected]>
Set ETIMEDOUT errno and return -1 from recv in case a socket was timed out, instead of 0 return value and 0 errno.
For instance, in case of TCP keep alive timeout.

Signed-off-by: Alexander Grissik <[email protected]>
The idea is to scan all rpm/deb packages for personal emails
we should not be releasing packages with such emails
the scan is done on both the metadat info and the changelog
of a specific package

Issue: HPCINFRA-919
Signed-off-by: Daniel Pressler <[email protected]>
pasis and others added 29 commits July 24, 2024 13:44
Non-zerocopy (XLIO_SOCKET_SEND_FLAG_INLINE) operations reuse common
tcp_write() which doesn't allow the queue to grow beyond specific number
of pbufs. The limit is derived from the TCP send buffer and usually
equals to hundreds or thousands of pbufs.

XLIO Socket API encourages users to limit the inflight data and allows
send operations to fails with the unrecoverable ENOMEM error. However,
on the other hand, the API describes that send operations aren't limited
by send buffer logic.

To follow current XLIO Socket API description, allow the TCP queue to
grow. To do this, increase the queue limit to 16M pbufs for XLIO
sockets.

Signed-off-by: Dmytro Podgornyi <[email protected]>
- we're switching here to ubuntu22.04-based container providing the support to clang-15 and clang-format-15

Signed-off-by: Viacheslav Login <[email protected]>
Blackduck module report output shows the wrong version, this is due to
projectVersion under args being set to a static value

Change projectVersion to the branch entered instead of static value

Signed-off-by: NirWolfer <[email protected]>
sys_str2addr() converts a string address representation to the sockaddr
structure. However, an invalid address sets either AF_INET or AF_INET6
address family and returns corrupted IP portion of the sockaddr object.

Return AF_UNSPEC address family in case of an invalid IP address. So,
default gateway detection can handle address parsing.

Invalid port portion is still silently ignored. In the future, the
function should return the conversion status and this needs to be
handled explicitly by the function users.

Signed-off-by: Dmytro Podgornyi <[email protected]>
sys_gateway() converts string address to a temporary sockaddr object
on stack before changing the result object. However, a different
uninitialized object is checked for the conversion status.

Check the correct object.

Signed-off-by: Dmytro Podgornyi <[email protected]>
Involving internal thread in checking OS events introduces huge lock contentions and serious performance degradation.
The mechanism relied on an assumption that internal thread will wake up for OS events since each epfd is added to internal thread epfd thus
saving OS polls in main thread.
This assumption is incorrect since in reality most of the time CQ events wake up internal thread as well.
To resolve that epoll os polling mechanism we make epoll Os polling to be performed the same as for poll and select via OS poll ration parameters.
Thus we remove involvment of internal thread, remove lock contention and improve performance.

Signed-off-by: Alexander Grissik <[email protected]>
Removing cached sys_vars improves CPU cache usage and makes the structs smaller.
Global sys_vars do not change during runtime and are hot in CPU cache.

Signed-off-by: Alexander Grissik <[email protected]>
Unti now, release process is done manually by the dev team. This process
involves creating a tag on a commit that needs to be released, building
that tag and copying the files to NFS location

The idea is to create a jenkins pipeline that will do the entire process
with given inputs, This commit will commence phase 1 - doing the build
and copying of packages created to NFS.
THE CREATION OF A RELEASE TAG ON A COMMIT IS NOT PART OF THIS PR

Add release_jjb and the corosponding matrix file for a new pipeline
definition, the release is run on rhel8.6
Add ARG HARBOR_URL to dockerfile, to support DRP in the future since the
release process needs to run there as well
Change do_release.sh script to match the new parameters provided by the
jenkins job and pass ShellCheck
Change create_pkg.sh to pass ShellCheck

Signed-off-by: NirWolfer <[email protected]>
The DEFINED_FORCE_TX_POLLING is always used and should not be turned off.
This is an obsolete leftover which marked TX poll section in epoll and global-ring-poll.

Signed-off-by: Alexander Grissik <[email protected]>
Using trylock for request_notification introduces more empty pollings. It is better to wait for lock to be available.
Using trylock for wait_for_notification prevents cleanup of ibv events which will accumulate with each failed trylock.

Signed-off-by: Alexander Grissik <[email protected]>
The return value of wait_for_notification methods is unused by upper layers.
We never expect errors in wait_for_notification so errors are printed inside wait_for_notification itself.

Signed-off-by: Alexander Grissik <[email protected]>
This condition is only for Internal Thread. However this may prevent even internal thread from polling when CQ is not empty.
Packets may arrive while m_b_was_drained set to true.

Signed-off-by: Alexander Grissik <[email protected]>
Removing m_n_wce_counter which prevents from Internal Thread to perform full polling cycle.
This memeber also introduces unnecessary operations and cache access for fast path.

Signed-off-by: Alexander Grissik <[email protected]>
Cleanup of deprecated env params XLIO_RX_POLL_OS_RATIO and XLIO_RX_SKIP_OS.

Signed-off-by: Alexander Grissik <[email protected]>
Rx Polling pools the CQ only up to X iterations. However, iomux call ring poll and if the polled CQEs do not generate an event,
iomux may falsly conclude that the CQ is empty and go to sleep on non empty CQ which may lead to infinite sleep althouth there are unpolled CQEs in the CQ.
To fix that, we should drain the CQ before going to sleep. In case a CQE arrives after we drained the CQ but before we requested a notification, we
have another poll attempt after requesting the notification.

Signed-off-by: Alexander Grissik <[email protected]>
BlueFlame support has been removed. Besides, XLIO_BF was unused and
an rdma-core specific env parameter was checked instead.

Remove the parameter as a leftover.

Signed-off-by: Dmytro Podgornyi <[email protected]>
TCP_OVERSIZE is enabled by default and there is no reason to disable it.
Remove TCP_OVERSIZE macro to reduce #ifdef creep.

If needed, this feature can be disabled manually in a single place in
the code for debugging purposes.

Also remove TCP_OVERSIZE_DBGCHECK code blocks as unused and not covered.

Signed-off-by: Dmytro Podgornyi <[email protected]>
tcp_rexmit_segment() is unused. Remove it to avoid code rotting.

Signed-off-by: Dmytro Podgornyi <[email protected]>
This function is overcomplicated and keeps some legacy logic. Remove
the detection of buffer size to allocate, because all the TX buffers
have constant size.

This also removes unnecessary flags from the prototype.

Signed-off-by: Dmytro Podgornyi <[email protected]>
This is a duplicate information.

Signed-off-by: Dmytro Podgornyi <[email protected]>
TCP_SNDQUEUELEN_OVERFLOW is treated as hardcoded maximum allowed
queuelen and checked in runtime additionally to snd_queuelen_max.

Instead, set upper limit to snd_queuelen_max in control flow and
remove the extra checks. This also allows to configure "endless"
queue unambiguously by setting it to exact TCP_SNDQUEUELEN_OVERFLOW
value.

Signed-off-by: Dmytro Podgornyi <[email protected]>
Physical buffers have constant size. So, no point in providing
max_length information during pbuf allocation and no need to keep
unsent_overize. A PBUF_RAM always can keep at least mss_local bytes
and we always can copy so many bytes to the last_unsent segment.

This also makes impossible to reach the case when an extra PBUF_RAM
is added to the last_unsent segment.

Simplify the code around oversize feature and pbuf allocation.

Signed-off-by: Dmytro Podgornyi <[email protected]>
Issue: HPCINFRA-2185

Signed-off-by: Viacheslav Login <[email protected]>
Signed-off-by: Alexander Grissik <[email protected]>
Jenkins job builder (JJB) allows for multiple job definitions in one
file, this will make it easier to share common variables such as folder
or git url, as well as make it easier to maintain in the future.

In the PDC site the harbor url is different and needs to be changed

Merge all jjb files into one under proj_jjb.yaml
Change registry url in release_matrix to match the PDC harbor url
Remove the latest_release link from do_release script, requrest by the
dev team

Signed-off-by: NirWolfer <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.