How to enable TCP BBR on Windows? - tcp

TCP BBR can be enabled in linux using the following commands:
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
as explained here
How do you do the same on a Windows 10 machine?

The linux kernel ships with a few built-in congestion-controllers and can load additional ones via kernel modules, so 3rd parties can provide custom ones.
I'm not aware of a mechanism that allows custom congestion controllers to be shipped for windows, so you can only use the ones provided by microsoft. Windows 10 does offer a few alternatives covering different use-cases besides the default one, e.g. CTCP and LEDBAT.
So you'll have to evaluate the available ones by the same criteria that made you choose BBR under linux.

Related

Qt Remote Objects' interoperability between operating systems

Can 2 Qt applications running on 2 different OSes -- one on Windows and the other one on macOS for instance -- communicate using QtRO?
I assume they can, but can anybody confirm this?
Thank you.
Yes, it is possible for two Qt applications running on different operating systems to communicate using Qt Remote Objects.
yout will need :
QtRO server with QRemoteObjectHost
QtRO cient with QRemoteObjectNode
Then you can use the client to access the exposed QObjects and invoke methods on them.
For more information on how to use QtRO, you can refer to the QtRO documentation: https://doc.qt.io/qt-5/qtremoteobjects-index.html

MPI messages across libraries

Can you send MPI messages across two libraries?
Example - If I have MS-MPI installed on a windows machine and then Open-MPI on a linux cluster (Same Network), can I get messages between code running on the two different OS.
Basically multiple program multiple data MPMD but using Windows and Linux resources.
Just need to know if this is possible, and if so any info would be nice, but not needed.
No, that is not possible. You will even get into great trouble if you try this with different versions or configurations of one implementation.
MPI is targeted at homogeneous installations on HPC systems. The communication protocol is not standardized, only the programming interface is.
In general: no. This is not specified within the MPI standard, and most implementations do not support such jobs. It is a rather uncommon use case, I guess.
However, Intel MPI does provide cross-os launching of jobs, see:
https://software.intel.com/en-us/mpi-developer-guide-linux-cross-os-launch-mode
Some detail:
Intel MPI, as well as other commercial MPI implementations are based on the MPICH open source project. I am not sure if cross-os launching can be achieved somehow via MPICH, though. A quick google research only provided negative, but possibly outdated results, e.g.
https://lists.mcs.anl.gov/pipermail/mpich2-dev/2005-July/000085.html

Cannot open include file dplay8.h .No such file or directory

We are converting directx9 to directx10 and we are getting an error: Cannot open include file :dplay8.h .
Please provide the solution how to resolve this and also the steps that might required to convert from directx9 to direct10.
DirectPlay is a deprecated legacy component. The last version of the legacy DirectX SDK to include the headers for it was August 2007. See DirectX SDKs of a certain age. It is not available in any Windows SDK.
It exists in the Windows operating system today for appcompat only. There are a number of important limitations to keep in mind:
DirectPlay Voice is not supported on Windows Vista or later operating systems. See KB970978
The NAT helper object is unsupported on Windows Vista or later
On Windows 8.x and Windows 10, DirectPlay is an optional Windows feature so it's not present by default. It has to be enabled by the user.
In short, you shouldn't use it. You should plan to rewrite the multiplayer support for that porting project, or strip it out.
DirectPlay's primary value was back when networking was a complex and evolving world: modem play, head-to-head serial ports, IPX/SPX, TCP/IP over modem, and TCP/IP. At this point TCP/IP is the only network solution that matters so using WinSock directly is far preferable. There's are also a number of security implications around use of UDP (datagram) vs. TCP (virtual circuit) that modern games need to take into account. The lobby mechanism of DirectPlay is also woefully outdated.
There are numerous modern game services (such as Xbox LIVE, Valve's Steam, etc.) that are designed to provide the match-making, NAT-traversal, and other features that are essential to modern multiplayer. You use WinSock in combination with service-specific libraries.
In a related note, there is absolutely no reason to use DirectX 10. DirectX 11 supports much more hardware, is supported on all the same operating systems (Windows Vista SP2+), and has numerous replacements for legacy support libraries that don't exist for Direct3D 10.

Run multiple instances of IBM BPM

I have the IBM Business Process Manager Advanced 7.5 installed.
Question:
Is it possible to install and run newer version - IBM BPM 8.5 on the same machine?
I worry about ports conflict (for example port 9043 to IBM Console).
Maybe I should ask how to change default port configuration?
Please help.
Technically it can be possible, however I suggest you do not do this as ibm bpm requires a lot of system resources to run and installing two versions of ibm bpm can make the system slower than ever before.
However I have seen multiple instances of same ibm bpm version running on a single cluster on server VM. This is practically stable and in use from considerable tenure.
PS. - I had administered a huge ibm bpm infra containing 80+ ibm bpm servers.
As Gas already commented, in theory this is possible. But you have to be aware, that IBM BPM is not only using the specified ports for web access, it also uses ports for internal communication. In my opinion, this is not an easy task to get right.
On the other hand, the system requirements for IBM BPM are quite challenging for the server, if You want to run both instances in parallel, you should consider that your server will need to be capable. WebSphere is kind of greedy and not really designed to share its resources ;)
Yes, you can run multiple versions of BPM on the same system. The primary concerns are going to be port conflict and OS system resources. Use the BPMConfig to create a new profile and installation that is on different ports. On my lab machines with VMs, I install all the BPM installs with the default ports and only have one (1) running at a time. If I need 2, I just spin up a new VM from the base template and go from there.
By Default, the port conflicts are addressed by the WebSphere Application server code. If needed you can specify "initialPortAssignment" for Dmgr, node and cluster members while creating the environment using BPMConfig command. You can even specify specific port numbers using the
https://www.ibm.com/support/knowledgecenter/en/SSFPJS_8.6.0/com.ibm.wbpm.ref.doc/topics/samplecfgprops.html
You can also provide Websphere options like "-startingPort starting_port | -portsFile ports_file_path | -defaultPorts" for Dmgr bpm.dmgr.profileOptions= and nodes bpm.de.node.#.profileOptions in the BPMConfig properties file. For cluster members just have option to indicate the starting port.
REf: https://www.ibm.com/support/knowledgecenter/cs/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/rxml_manageprofiles.html
I would not advise on changing the port numbers once you start using the BPM environment.
As indicated by others make sure you have enough resources if you are planning to run both environments at the same time.
Yes, I am using two versions for evaluation. Port conflicts can be handled using server (WebSphere Integrated Solutions Console) console or BPMConfig utils.

Choosing Embedded Linux for device

I am starting to create a QT application with sqlite for a hand held device. My Project Manager asks me to select an operating system (embedded linux) for the device (we are not considering android).
As in Desktop, are there many embedded-Linux distributions for devices?
If so, Which embedded linux I should consider?
You have multiple choices, but I will suggest the easier and - in my opinion - better two.
Buildroot - is a set of makefiles that lets you create your custom embedded distribution. Can take care of building the Linux
kernel, the toolchain and a barebox or U-Boot bootloader, too. Easily expandable and
with a practically zero learning curve. You have a fully working
system in a matter of hours.
Yocto - a fully fledged (and complicated) build system. Suggested over Buildroot when you need a LOT of packages/components
and may need flexibility in expanding the system directly on
premises. What you can do substantially depends on the "layers" (sets of rules for building things) available: you combine layers together to obtain your system. Has a steep learning curve but is used and directly
supported by multiple vendors (e.g.: Atmel, TI).
Anyway, unless you have more than good reasons, I strongly suggest the former.
There are several Linux distros to be used with ARM. Maybe you should consider Fedora ARM https://fedoraproject.org/wiki/Architectures/ARM
This is a difficult question to answer not knowing more about the project requirements (not just software requirements, but also non-functional ones as well) and capabilities of the platform.
Angstrom (based on OpenEmbedded) is another possibility for Linux.
I would challenge the assumption that the operating system must be Linux. Why? If time-to-market or having commercial support are important, you might be better off with commercial embedded or RT operations systems such as VxWorks or QNX.
There are also professionally supported Linux distros such as Montavista
Whilst free linux distros are, well, free, you are generally on your own and your team's time isn't free.
You can use Qt for embedded device , it’s fast and compatible with many hardwares and if your hardware is not supported, porting it to a new hardware is not so hard
plus it has special rendering system

Resources